2016-11-21 1 views
0

Ich studiere die MongoDBUniversityM101P: MongoDB für Entwickler natürlich."Dieser Knoten wurde nicht mit der Option replSet gestartet"

Ich verwende WiredTiger auf MongoDB 3.2.

Ich bin derzeit am Thema Replik-Sets.

Der Kurs erfordert ich ein Replikat mit dem folgenden Code erstellen:

mongod --replSet rs1 --logpath "1.log" --dbpath /data/rs1 --port 27017 --fork 

Aber ich bin mit Windows, die nicht fork nicht unterstützt, so this Kern mit (wie durch eine Kursleitung empfohlen) I liefen diese Leitungen gleichzeitig in drei verschiedenen Konsolen, nachdem ich die Verzeichnisse erstellt hatte (mit mongod Laufen):

mongod --replSet rs1 --logpath "1.log" --dbpath rs1 --port 27018 --smallfiles --oplogSize64 
mongod --replSet rs1 --logpath "2.log" --dbpath rs2 --port 27019 --smallfiles --oplogSize64 
mongod --replSet rs1 --logpath "3.log" --dbpath rs3 --port 27020 --smallfiles --oplogSize64 

, die alle gut zu funktionieren scheint; Ich kann sehen, dass die Verzeichnisse gefüllt sind, und die Protokolldateien, die alle "Warten auf Verbindung" mit der entsprechenden Portnummer anzeigen.

Schließlich Ich verwende den folgenden Code die Server als Replikat-Gruppe zu vereinen:

config = {_id: "rs1", members: [ 
      { _id: 0, host: "localhost:27018"}, 
      { _id: 1, host: "localhost:27019"}, 
      { _id: 2, host: "localhost:27020"} 
           ] 
     } 

rs.initiate(config) 
rs.status() 

Welche werfen wird:

"errmsg" : "This node was not started with the replSet option", 
"code" : 76 

Was ich nicht meinen Kopf um bekommen, wie Ich habe eindeutig die --replSet Option für jeden Server verwendet und tatsächlich den gleichen replSet-Namen zur Verfügung gestellt, der in der Konfigurationsdatei verwendet wird.

Ich habe andere Fragen zu diesem Thema angeschaut, aber es gibt wenige, und keine, die ich finden kann Adresse und dieses Problem für mich zu lösen. This stellt man fest, was aus dem Fehler offensichtlich aussieht: meine Config-Datei --replSet=rs1 enthalten sollte, aber von den documentation Lesen ich den Eindruck habe, dass die _id der Config I definiert haben diesen Zweck dient:

_id
Type: string

The name of the replica set. Once set, you cannot change the name of a replica set.

_id must be identical to the replication.replSetName or the value of –replSet specified to mongod on the command line.

Darüber hinaus ist diese Es wird deutlich gezeigt, dass die Kursvideo-Demonstrationen genau so funktionieren, wie ich es versuche.

Ich bin am Ende meines Wissens und würde sehr zu schätzen wissen, Hilfe. So
Jake

Antwort

3

als ich diese Frage fertig geschrieben, die Antwort kam nur zu mir wie eine Glühbirne, die oft zu passieren scheint ... aber dieses Mal dachte ich, ich hier die Antwort für alle verlassen würde sonst die gekämpft hat damit angesichts der etwas fehlenden Fragen/Antworten zu diesem Thema im Forum.

Es war ein einfacher Fall des Standard-Ports, der beim Ausführen meiner Konfigurationsdatei verwendet wird.
Ich verwendete mongo < init_replica.js, um meine Konfiguration auszuführen und die Server zu vereinheitlichen, um den Replikatsatz zu erstellen.

Durch einfaches einen Port von einem der gültigen Server verwendet das Hinzufügen, lief es richtig:

mongo --port 27020 < init_replica.js 

Weh mir für diesen einen, aber ich hoffe, dass dies diejenigen hilft auch, den Kurs zu studieren, die sich irgendwo stecken finden ähnlich.

Jake

Verwandte Themen