我做一个MongoDB作业并按照步骤操作,但我遇到了“服务器没有运行replset”的问题
我做的步骤是:
`"start mongod --replSet m101 --logpath 1.log --dbpath \data\rs1 --port 27017 --smallfiles --oplogSize 64
start mongod --replSet m101 --logpath 2.log --dbpath \data\rs2 --port 27018 --smallfiles --oplogSize 64
start mongod --replSet m101 --logpath 3.log --dbpath \data\rs3 --port 27019 --smallfiles --oplogSize 64
现在连接到mongo shell并确保它出现。
mongo --port 27017
现在您将创建副本集。在mongo shell中键入以下命令:
config = { _id: "m101", members:[`
{ _id : 0, host : "localhost:27017"},
{ _id : 1, host : "localhost:27018"},
{ _id : 2, host : "localhost:27019"} ]
};
rs.initiate(config);"
我不知道问题出在哪里,有人说问题可能是另一个正在运行的mongod。但我没有任何其他mongod在同一时间运行。
谢谢!
答案 0 :(得分:7)
对我来说也是如此。问题是我在开始启动节点之前没有任何参数运行过mongod。 首先杀死所有mongo,mongod和mongos实例以保证环境清晰。
ps -ef | grep -i 'mongo'
sudo service mongod stop
问题原因很简单。 mongod和mongos的默认端口是27017.所以,我发生的事情是第一个副本节点从未创建过。以下命令将我连接到默认的mongod实例:
mongo --port 27017
我希望这能解决你的问题。 ;)
答案 1 :(得分:3)
检查shell中连接的mongod使用的命令行选项:
> use admin
switched to db admin
> db.runCommand("getCmdLineOpts")
{
"argv" : [
"mongod",
"--dbpath",
"/data/db",
"--replSet",
"rs0"
],
"parsed" : {
"replication" : {
"replSet" : "rs0"
},
"storage" : {
"dbPath" : "/data/db"
}
},
"ok" : 1
}
您是否看到了replSet选项?
您还可以尝试以不同的方式启动副本集。不要输入配置并将其传递给rs.initiate()
,而只需运行rs.initiate()
。它将使用一个成员(您在shell中连接的服务器)设置默认配置。然后,您可以添加其他两个服务器。有关详细信息,请参阅tutorial。