首页 文章

MongoDB服务器未使用replset运行

提问于
浏览
7

我做一个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在同一时间运行 .

谢谢!

2 回答

  • 7

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

    ps -ef | grep -i 'mongo'
    sudo service mongod stop
    

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

    mongo --port 27017
    

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

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

相关问题