2012-11-28 8 views
16

Ich habe einen Fehler bei der Konfiguration von Replikat-Sets in Mongodb gemacht. Ich denke, was ich falsch gemacht habe ist, dass ich eine rs.initialize() auf beiden Knoten gemacht habe, was sie in gewisser Weise verwirrt hat. Ich bin mir nicht sicher.Neustart mit Replikatkonfiguration in mongodb

Jetzt möchte ich nur von vorne beginnen, aber ich konnte keinen Weg finden, einen Knoten zu de-initialisieren. Also folgte ich dem Hinweis, die lokalen * db-Dateien zu löschen und damit die Konfigurationen zurückzusetzen. Ich habe das getan, und jetzt funktioniert nichts mehr.

> rs.initiate() 
{ 
    "info2" : "no configuration explicitly specified -- making one", 
    "me" : "0.0.0.0:27017", 
    "errmsg" : "couldn't initiate : can't find self in the replset config", 
    "ok" : 0 
} 
> rs.conf() 
null 

Ich habe versucht, das Paket (Ich tue dies auf Ubuntu-Server) zu entfernen und neu zu installieren, die nur dazu geführt, dass meine mongodb.conf und Skript meiner init verschwunden aufgehört zu arbeiten. Dies ist natürlich leicht genug zu lösen.

Also, wie fange ich neu an?

Hinweis: Ich habe mir this answer angesehen, aber da rs.conf() nicht funktioniert, funktioniert das auch nicht.

Antwort

25

Wenn Sie eine Neukonfiguration mit einer von Ihnen generierten Konfiguration erzwingen, wird das Problem dadurch behoben?

Sie könnten diese ähnlich tun, um die Folge vom {{Mongo}} shell:

> cfg = { 
...  "_id" : "rs0", 
...  "version" : 1, 
...  "members" : [ 
...   { 
...    "_id" : 0, 
...    "host" : "0.0.0.0:27017" 
...   } 
...  ] 
... } 

>rs.reconfig(cfg, {force:true}) 

Sie können die cfg Variable stimmen müssen Ihren Hostnamen und Portnamen haben, da die can't find self in new replset config Fehler zurückgegeben werden an die Shell, wenn das repl-Set den Knoten, von dem es ausgeführt wird, nicht in der Konfiguration finden kann.

+5

Ich musste 'rs.initiate (cfg)' anstelle von 'rs.reconfig' verwenden, sonst funktionierte das perfekt! – obeq

+2

arbeitete für mich, ich musste '" Host "verwenden:" 127.0.0.1:27017 "' und 'rs.initiate' obwohl. Mongo-Server '2.0.4-1ubuntu2.1' auf Ubuntu präzise – danza

+0

Ich musste auch rs.initiate (cfg) – machunter

54

Sie erhalten diesen Fehler auch, wenn der Hostname Ihres Rechners nicht auf 127.0.0.1 abgebildet wird. Aktualisieren Sie Ihre/etc/hosts und/oder Ihren/etc/hostname und rs.initiate() ohne config sollte funktionieren.

+2

Das Problem für mich behoben. Wenn Sie Ihren Hostnamen in einer Cloud-Instanz ändern, stellen Sie sicher, dass Sie den neuen Hostnamen zu/etc/hosts hinzufügen. –

+1

Dieses Problem wurde ebenfalls behoben, indem Sie sicherstellen, dass die zugewiesene IP-Adresse auch an die Einstellung bind_ip in Ihrer/etc/mongod gebunden ist. Konf-Datei. Anscheinend ist es nicht immer ausreichend, wenn es an 127.0.0.1 gebunden ist. – Felby

+2

Hatte etwas ähnliches zu tun: Da die LAN IP aufgelöst, aber nicht 127.0.0.1, habe ich beide hinzugefügt - 'bind_ip = 10.10.1.1.127.0.0.1'. –

9

Wenn Sie das richtige Ergebnis wird erzielen kommentieren Sie nur bind_ip in /etc/mongod.conf dieser so dass Sie einen rs.initiate() Befehl erneut können Set-up oder die Replik reconfig.