Stellen Sie mit mgo eine Verbindung zum Replikatsatz her
-
21-12-2019 - |
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?
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.