mongodb localhost副本设置

问题描述 投票:1回答:1

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

commands:

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个回答
0
投票

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

并且在初始化副本集时,此实例作为成员添加到副本集。以下是rs.status()

的输出代码段
{
    "_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",而另一个成员您正在尝试添加是"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")

它将成功添加。

© www.soinside.com 2019 - 2024. All rights reserved.