我们使用的是mongoDB 3.0,我们的设置使用六个实例,其中一个是PRIMARY,其余的是SECONDARY。
我们试图使用以下命令序列删除其中三个 -
rs.remove("host1:port") //same for host2, host3
现在我们想把它们加回来,rs.conf() 导致了一个奇怪的状态。即
删除前的副本集_id:1,2 and 3
位于_id:7,8, and 9
为什么会这样,我该如何纠正rs.conf()
?
此外,如果我再次尝试删除 host1、host2 或 host3,它们也不会被删除。
rs.remove("host1:port")
conf()
再次显示该值,因此我们现在无法删除它们。有没有办法克服这种状态?
rs.conf()
{
"_id" : "shard1",
"version" : 15,
"members" : [
...
{
"_id" : 4,
"host" : "host4:port",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : 0,
"votes" : 1
},
{
"_id" : 5,
"host" : "host5:port",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : 0,
"votes" : 1
},
{
"_id" : 8,
"host" : "host1:port",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : 0,
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatTimeoutSecs" : 10,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
}
}
}
添加主机时,_id 总是设置为比当前最大 _id 大 1。如果你真的想“修复”那个,你总是可以这样做:
同样,您可以更改 rs 配置中的任何内容。删除或添加新主机,更改列表中主机的顺序。