我正在研究MongoDBUniversity的M101P:MongoDB for Developers當然。「此節點沒有啓動replSet選項」
我正在使用WiredTiger on MongoDB 3.2。
我目前的主題是副本集。
的課程要求我用下面的代碼創建一個副本集:
mongod --replSet rs1 --logpath "1.log" --dbpath /data/rs1 --port 27017 --fork
但我使用的是Windows,它不支持fork
,因此使用this要點(所推薦的課程管理員)我在3個不同的控制檯這些線路同時運行我已經創建的目錄(與mongod的運行)後:
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
這一切似乎做工精細;我可以看到目錄已經填滿,日誌文件都顯示「正在等待連接」並顯示相關的端口號。
最後,我運行下面的代碼統一服務器作爲副本集:
config = {_id: "rs1", members: [
{ _id: 0, host: "localhost:27018"},
{ _id: 1, host: "localhost:27019"},
{ _id: 2, host: "localhost:27020"}
]
}
rs.initiate(config)
rs.status()
這是拋出:
"errmsg" : "This node was not started with the replSet option",
"code" : 76
,我可以不在身邊讓我的頭,如我已經明確使用每個服務器的--replSet
選項,並且確實提供了與配置文件中使用的相同的replSet名稱。
我已經看過關於這個主題的其他問題,但是很少有,並且我沒有找到可以解決這個問題的地址。 This一個陳述了從錯誤看起來很明顯:我的配置文件應包括--replSet=rs1
,但是從閱讀documentation我給大家的印象,我已經定義了配置的_id
服務這一目的:
_id
Type: stringThe 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.
此外,這清楚地顯示在課程材料視頻演示中正確運行,正如我試圖使用它的方式。
我在我的智慧結束,並非常感謝幫助。
傑克