我只是根据网上的说明设置了副本集。
我的配置如下:
{
"_id" : "rs0",
"members" : [
{
"_id" : 0,
"host" : "10.0.8.10:27017"
}
]
}
我运行了rs.initiate()命令。没问题。
好的,所以我去设置第二个节点我做了同样的事情(当然使用不同的IP)。 我再次运行rs.initiate()命令没有问题。
我运行了rs.add命令,提供了我的第一个实例的IP /端口。没问题。
最后,从另一个节点,我运行了rs.add命令,引用了前一个节点。 现在我明白了:
rs0:PRIMARY> rs.add("10.0.0.10:27017");
{
"errmsg" : "exception: member 10.0.0.10:27017 has a config version >= to the new cfg version; cannot change config",
"code" : 13341,
"ok" : 0
}
这是什么意思?我该如何解决?两个节点都是从相同的Mongo版本创建的。
答案 0 :(得分:2)
您无需在另一个节点上运行rs.initiate()
。将节点添加到配置后,在第一个节点上运行rs.initiate()
将启动整个副本集。
导致错误是因为副本集已经使用您在第二次运行rs.initiate()
时设置的配置版本启动。
答案 1 :(得分:2)
对于任何给定的replicaset,rs.initiate()命令只能使用一次。您可以选择将该组的所有成员指定为命令的选项,如下所示:
rs.initiate({_id:'rs0', members:[{_id:0, host:'10.0.8.10:27017'},{_id:1, host:'10.0.0.10:27017'}]})
配置replicaset后,您可以使用rs.add()添加新成员。如果选择此方法,则使用单个成员初始化集合,然后从PRIMARY执行rs.add()。
rs.initiate({_id:'rs0', members:[{_id:0, host:'10.0.8.10:27017'}]})
rs.add('10.0.8.10:27017')