“This node was not started with the replSet option”

北城余情 提交于 2019-12-02 02:53:56

问题


I am studying the MongoDBUniversity's M101P: MongoDB for Developers course.

I am using WiredTiger on MongoDB 3.2.

I am currently on the topic of replica sets.

The course requires I create a replica set using the following code:

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

But I am using Windows, which doesn't support fork, so using this gist (as recommended by a course admin) I ran these lines simultaneously in 3 different consoles after I had created the directories (with mongod running):

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

Which all seems to work fine; I can see the directories have been filled, and the log files, which all show "waiting for connection" with the relevant port number.

Finally, I am running the following code to unify the servers as a replica set:

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

rs.initiate(config)
rs.status()

Which is throwing:

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

Which I can't get my head around, as I have clearly used the --replSet option for each server, and indeed provided the same replSet name used in the config file.

I've looked at other questions on this topic, but there are few, and none that I can find address and solve this issue for me. This one states what looks obvious from the error: my config file should include --replSet=rs1, but from reading the documentation I am given the impression that the _id of the config I have defined serves that purpose:

_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.

Furthermore, this is clearly shown functioning correctly in the course material video demonstrations in precisely the manner I am attempting to use it.

I am at my wit's end, and would very much appreciate help.
Jake


回答1:


So as I finished writing this question, the answer just came to me like a lightbulb, which seems to happen often... but this time I thought I would leave the answer here for anyone else who has struggled with this, considering the somewhat lack of questions/answers on this topic on the forum.

It was a simple case of the default port being used when running my config file.
I was using mongo < init_replica.js to run my config and unify the servers to create the replica set.

By simply adding a port used by one of the valid servers, it ran correctly:

mongo --port 27020 < init_replica.js 

Woe is me for that one, but I hope this helps those also studying the course who find themselves stuck somewhere similar.

Jake



来源:https://stackoverflow.com/questions/40711829/this-node-was-not-started-with-the-replset-option

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!