在mongodb副本集集群中,若是丢失了n/2+1个节点,也就是失去了多数节点时候,在集群内无法投票表决剩下的节点谁能当主库,那就需要强制其中一个节点为主库.
下面是操作步骤:
1.执行cfg=rs.conf()
2.需要设置需要的_id为主库,
cfg.members=[cfg.members[3]]
3.执行集群重新设置
4.rs.reconfig(cfg, {force: true});
5.rs.status()
下面是详细操作步骤,该集群是四个节点的副本集,其中三个节点已经丢失,使剩下的节点为主节点,单实例运行.
执行cfg=rs.conf(),获取集群的节点信息:
cms:SECONDARY> cfg=rs.conf()
{
"_id" : "cms",
"version" : 32948,
"protocolVersion" : NumberLong(1),
"members" : [
{
"_id" : 0,
"host" : "192.168.1.193:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},