MongoDB服务器未使用replset运行

use*_*188 7 mongodb

我做一个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
Run Code Online (Sandbox Code Playgroud)

现在连接到mongo shell并确保它出现.

mongo --port 27017
Run Code Online (Sandbox Code Playgroud)

现在,您将创建副本集.在mongo shell中键入以下命令:

config = { _id: "m101", members:[`
          { _id : 0, host : "localhost:27017"},
          { _id : 1, host : "localhost:27018"},
          { _id : 2, host : "localhost:27019"} ]
};
rs.initiate(config);"
Run Code Online (Sandbox Code Playgroud)

我不知道问题出在哪里,有人说问题可能是另一个正在运行的mongod.但我没有任何其他mongod在同一时间运行.

谢谢!

Jay*_*eto 7

对我来说也是如此.问题是我在开始启动节点之前没有任何参数运行过mongod.首先杀死所有mongo,mongod和mongos实例,以保证环境清晰.

ps -ef | grep -i 'mongo'
sudo service mongod stop
Run Code Online (Sandbox Code Playgroud)

问题原因很简单.mongod和mongos的默认端口是27017.所以,我发生的事情是从未创建过第一个副本节点.以下命令将我连接到默认的mongod实例:

mongo --port 27017
Run Code Online (Sandbox Code Playgroud)

我希望这能解决你的问题.;)


wdb*_*ley 5

检查您在 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
}
Run Code Online (Sandbox Code Playgroud)

您看到 replSet 选项了吗?

您还可以尝试使用不同的方式来启动副本集。无需输入配置并将其传递给rs.initiate(),只需运行即可rs.initiate()。它将使用一个成员(您在 shell 中连接到的服务器)设置默认配置。然后您可以添加其他两台服务器。请参阅教程以获取更多信息。