【问题标题】:MongoDB replica set initiateMongoDB 副本集启动
【发布时间】:2021-02-23 19:55:09
【问题描述】:

我对 MongoDB 很陌生,并且有以下关于副本集启动的问题。

当我尝试从独立 mongod 启动副本集时,我尝试过:

> use admin
> config = {id: "rs_name", members: [{id: 0, host: "127.0.0.1:27017"}]}
> db.runCommand('replSetInitiate', config)

"info2" : "no configuration specified. Using a default configuration for the set",
"ok": 1
...

这是第一个好奇:为什么我已经将“config”分配为副本集配置,所以它显示“无配置”?

虽然副本集成立,但当我累了:

> use local
> db.system.replset.find().pretty()

...
"members": [
   {
      "host": "here is hostname insted of host IP"
   }
...

这是我没有得到的第二个要点:为什么副本信息显示主机名而不是主机 IP 作为属性“主机”的值?

但是当我尝试不同的方式时:

> use admin
> config = {id: "rs_name", members: [{id: 0, host: "127.0.0.1:27017"}]}
> rs.initiate(config)

一切顺利,没有给出“未指定配置”之类的消息。副本信息还显示主机 IP 而不是主机名。

这是最后一个:replSetInitiaters.initiate尝试初始化副本集的机制有什么区别?

【问题讨论】:

  • 要查看底层代码,请从 mongo shell 执行 rs.intiate(就像没有括号的那样)。

标签: mongodb replicaset


【解决方案1】:

config = {id: "rs_name", members: [{id: 0, host: "127.0.0.1:27017"}]}

  1. 将 id 替换为 _id

db.runCommand('replSetInitiate', 配置)

  1. 改用db.runCommand({replSetInitiate : config})

这是我没有得到的第二个要点:为什么副本信息显示主机名而不是主机 IP 作为属性“主机”的值?

  1. 正如 mongodb 文档所描述的 When possible, use a logical DNS hostname instead of an ip address, particularly when configuring replica set members or sharded cluster members. 。 第一步,你得到no configuration specified. Using a default configuration for the set,默认配置可能使用主机名而不是ip地址。

发件人:https://docs.mongodb.com/manual/reference/command/replSetInitiate/

【讨论】:

    【解决方案2】:

    请关注下方并使用下方突出显示的_id

    使用管理员配置 = { _id : "rs_name", 成员:[ {_id:0,主机:“IP:27017”} ] }

    rs.initiate(config)

    【讨论】:

      猜你喜欢
      • 2018-03-26
      • 1970-01-01
      • 2020-07-20
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多