Frage

Ich benutze mtools um einen Replikatsatz mit 3 Knoten hochzufahren (mlaunch --replicaset) auf den Ports 27017, 27018 und 27019.

Allerdings habe ich Schwierigkeiten, tatsächlich eine Verbindung zum Replikatsatz herzustellen Dial aus dem MGO-Paket.Der Codeausschnitt unten gerät mit der Meldung in Panik no reachable servers:

type Person struct {
    Name   string `bson:"name"`
    Age    int    `bson:"age"`
}

func main() {
    session, err := mgo.Dial("localhost:27017,localhost:27018,localhost:27019")
    if err != nil {
            panic(err)
    }
    c := session.DB("mydb").C("testCollection")
    c.Insert(&Person{Name: "Foo", Age: 20})
}

Wie genau stellt man mithilfe des MGO-Pakets eine Verbindung zu einem Replikatsatz her?

War es hilfreich?

Lösung

Du musst laufen rs.initiate() um die anfängliche Konfiguration des Replikatsatzes abzuschließen.Dadurch wird ein Replikatsatz mit einem Mitglied initiiert.Dann rennst du rs.add() mit den richtigen Parametern für Ihre Hosts, um die anderen Mitglieder online zu bringen.

Hier ist ein Tutorial zum Prozess:

http://docs.mongodb.org/manual/tutorial/deploy-replica-set/

Im Allgemeinen ist es eine gute Idee, jedes Mal, wenn Sie Probleme mit der Ausführung von Mongodb aus dem Code heraus haben, eine Verbindung herzustellen und das Gleiche über die Mongo-Shell zu tun – das kann Ihnen viel Zeit und Mühe sparen.

Um diesen Prozess mit mlaunch neu zu starten, müssen Sie ihn folgendermaßen ausführen:

mlaunch --init --replicaset

Dadurch wird ein 3-Knoten-Replikatsatz mit dem Namen „replset“ initialisiert und gestartet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top