日期:2014-05-16  浏览次数:20427 次

MongoDb集群中当多台服务器down掉恢复

? 当MongoDb集群中的多台服务器down掉后我们可以通过Mongodb提供的命令重新修复集群关系.当我们的集群中还存在一半以上的服务器结点我们可以方便的重新选择primary node.在Mongodb1.8版本以上我们可以用下面的命令来重新选择primary node.运行下面命令必须在primary node

? ?cfg = rs.conf() //得到副本集的配置对象

? ?cfg.members[0].priority = 2给当前第一个结点设置优先级以便让它能去竞选primary node

? ??rs.reconfig(cfg)//让配置生效

当我们的副本集中超过一半的结点服务器已经down掉,我们就不能使用上面的命令恢复副本集,必须使用下面的命令:

cfg = rs.conf() //得到副本集的配置对象

? ? ?//把down掉的结点从cfg.members中去掉,留下处于活动的结点

? ? ?config.members = [config.members[1], config.members[3], config.members[4]]

? ? ?rs.reconfig(config, {force : true})//让配置生效,因为现在没有呢primary node必须添加强 制更新(force:true)

如果刚才down掉的结点要重新加入该副本集那么需要使用下面的命令:

? ? ??cfg = rs.conf() //得到副本集的配置对象

? ? ?//把down掉的结点重新加入进来并且原来的结点也要加入进来(这里注意down的结点原来的—id是什么这里就填什么不然会出现很多意象不到的问题)

? ? ?config.members = [{_id:0,host:"172.27.1.216:2000"}, config.members[3], config.members[4]]

? ? ?rs.reconfig(config)//让配置生效,这里不需要加强制更新