[我想在我的本地计算机上设置一个副本设置,我正在使用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)
}
}
}
[使用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")
它将成功添加。