如何从MongoDB Replication Set 退役的从节点,恢复为新的一个主节点?

现有A(主节点)、B(从节点)、C(从节点)组成的 副本集。

现在想让C退役,在A里面rs.remove(c)了。

此时C恢复单身。

但不知道为何,给C介绍女朋友,insert一条新数据,C一直报 Not Master

clipboard.png

阅读 3.2k
2 个回答

重启服务才能解决该问题。。


补充:2019年9月6日16:58:36

发现把C踢出群之后,无法被connected,也无法连接了,查看日志:

2019-09-06T08:48:48.116+0000 I REPL [replication-0] Not choosing new sync source because we are not in the config.

上述的操作是,被primary rs.remove(c)

在c上退出客户端,然后再进去,发现报错,无法连接

此时再回到A,这单身狗C拉入群:rs.status(),查看到c :"stateStr" : "(not reachable/healthy)",

A(127.0.0.1:27017是a节点的地址) rs.remove(c)以后:
在C(从节点)运行如下代码(127.0.0.1:27018是c节点的地址)

config=rs.conf()
config.members[0].host="127.0.0.1:27018"
rs.reconfig(config,{force:true})

运行完以后可以看到c节点也变成master=true了,现在a节点和c是两个独立的master,可以插入数据了
如下图

clipboard.png

clipboard.png

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进