【问题标题】:MongoDB server is not running with replsetMongoDB 服务器未使用 replset 运行
【发布时间】:2014-09-15 01:12:16
【问题描述】:

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

谢谢!

【问题讨论】:

  • 在第一步启动服务器时是否出现任何错误/警告?

标签: mongodb


【解决方案1】:

这也发生在我身上。问题是我在开始启动节点之前运行了没有任何参数的 mongod。 先杀掉所有的mongo、mongod和mongos实例,保证环境清零。

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

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

mongo --port 27017

我希望这能解决您的问题。 ;)

【讨论】:

  • 对于 mac:brew services stop mongodb
【解决方案2】:

检查您在 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 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 2016-10-23
    • 2015-01-13
    • 1970-01-01
    • 2019-07-09
    • 2018-07-26
    • 2021-01-30
    相关资源
    最近更新 更多