1)我有3个mongodbs在副本集中运行
mongod --fork --logpath a.log --smallfiles --oplogSize 50 --port 27001 --dbpath data/z1 --replSet z
mongod --fork --logpath b.log --smallfiles --oplogSize 50 --port 27002 --dbpath data/z2 --replSet z
mongod --fork --logpath c.log --smallfiles --oplogSize 50 --port 27003 --dbpath data/z3 --replSet z
2)现在27001和27002已经失效。
如果不重新启动27001和27002,我需要做些什么来制作27003主要版本?
答案 0 :(得分:2)
以下是如何做到这一点。
删除dbpath
的内容后重新启动其他两个实例。
假设你无法让其他节点恢复在线状态(这让我想起了M102的一些功课)
replset:SECONDARY> oldConf = rs.conf()
[...]
replset:SECONDARY> conf = {
...
... _id:oldConf._id,
... version: oldConf.version + 1,
... members: [ oldConf.members[2] ]}
[...]
replset:SECONDARY> rs.reconfig(conf,{force:true})
注意:您不需要在oldConf.members[2]
放置2,而是需要在oldConfig.members
中的端口27013上运行实例的位置,从0开始。发送rs.reconfig
之后命令,最后一个节点可能需要几秒钟才能成为主节点。
使用相应的--replSet
参数获取另外两个节点,并使用上述过程通过将它们添加到conf
的成员数组中来添加它们。
答案 1 :(得分:1)
您必须重新配置副本集:http://docs.mongodb.org/manual/tutorial/reconfigure-replica-set-with-unavailable-members/
即你必须实际访问该成员并运行rs.reconfig以从集合中删除这两个死亡成员,因为你有大多数成员离线。