【问题标题】:mongodb localhost replicasetupmongodb 本地主机副本设置
【发布时间】:2019-09-20 01:46:41
【问题描述】:

我想在我的本地机器上设置一个副本设置,我正在使用 mongodb(mongod1.conf,mongod2.conf) 的实例,rs 在端口 27018 上启动了 mongo1,我想将成员添加到 27018,rs.add ('ThinkPad-X230:27019') 它抛出一个名为

的错误

命令:

mongod --replSet Replicaset1 --dbpath home/data --port 27018
mongo --port 27018
>> rs.initiate()
>> rs.add("ThinkPad-X230:27019")

mongod --dbpath home/data2 --port 27019

mongo --port 27019

我已经检查了 db.serverStatus().host in 27019 端口并将主机名“ThinkPad-X230:27019”添加到 rs.add() 成员中正在抛出错误。

{
    "ok" : 0,
    "errmsg" : "Either all host names in a replica set configuration must be localhost references, or none must be; found 1 out of 2",
    "code" : 103,
    "codeName" : "NewReplicaSetConfigurationIncompatible",
    "operationTime" : Timestamp(1568943205, 1),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1568943205, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
}

【问题讨论】:

  • 能否请您粘贴您的配置文件。

标签: mongodb mongodb-query replicaset mongodb-replica-set


【解决方案1】:

当您使用--replSet Replicaset1 选项启动mongod 的第一个实例时,它被配置为Replicaset1 副本集的一部分。

当您初始化副本集时,此实例已作为成员添加到副本集中。下面是rs.status()的输出sn-p

{
    "_id" : 0,
    "name" : "localhost:27018",
    "health" : 1,
    "state" : 1,
    "stateStr" : "PRIMARY",
    "uptime" : 228,
    "optime" : {
        "ts" : Timestamp(1569751005, 1),
        "t" : NumberLong(1)
    },
    "optimeDate" : ISODate("2019-09-29T09:56:45Z"),
    "electionTime" : Timestamp(1569750830, 2),
    "electionDate" : ISODate("2019-09-29T09:53:50Z"),
    "configVersion" : 3,
    "self" : true
}

你可以看到成员的名字是"localhost:2018"

因此,当您尝试将另一个成员作为rs.add('ThinkPad-X230:27019') 添加到此副本集时,它会给您以下错误,这是一个要抛出的有效错误,因为一个成员是"localhost:2018" 而另一个是您尝试add 是 "ThinkPad-X230:27019" 并且两者都必须是 localhost

"errmsg" : "Either all host names in a replica set configuration must be localhost references, or none must be; found 1 out of 2"

尝试使用以下命令添加成员,

rs.add("localhost:27019")

并且会添加成功。

【讨论】:

  • 嗨 Shubham vaishnav,当 mongod 实例 20018 正在运行时,只有我能够在 20018 年打开 mongo shell,我可以知道如何启用 mongod 20018 实例永远运行
  • @venkatesh,我没听懂你,你想永远运行mongod 实例,它会一直运行直到它停止或出现问题。
  • @vaishnav,我想永远运行 mongod --replSet Replicaset1 --dbpath home/data --port 27018,就像我们使用 systemctl 作为服务对默认端口 27017 所做的那样
  • @venkatesh,然后您可以使用您的配置为 mongoDB 创建自定义 systemd 服务,然后您也可以将 mongoDB 作为服务运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 2021-06-20
  • 2012-03-22
  • 2013-10-22
  • 2015-04-19
相关资源
最近更新 更多