主服务器关闭后,副本集成员不会重新同步

时间:2016-10-31 18:24:29

标签: mongodb

我有一个包含3个节点的副本集,我有一个名为dev-6的服务器,运行mongo 3.0.6,dev 5有2个mongos,运行3.2。我希望dev 6成为主要的,所以我将其他2个节点添加到其启动的副本集中,一旦我这样做,它就变成了主节点而其他2个节点开始同步它。下面是我关闭dev 6后我的设置如何显示的屏幕截图,然后重新启动。

enter image description here

因为,预期的开发6是次要的,所以是开发5:27018。我想知道的是为什么dev 5说没有人同步,但是开发5:27019是说它与开发5:27018同步。

我现在要按照mongo说明将dev 6作为主要内容,现在就是结果了。

enter image description here

Dev 6是主要的,但我试图理解的是,其他dev 5实例如何不与dev 6连接。在得出一些结论之前,我能够从dev 6 ping dev 5,反之亦然,/etc/hosts配置文件包含彼此的IP地址。

编辑:我的副本集无法连接以下消息"lastHeartbeatMessage" : "could not find member to sync from",。如果我运行rs.config(//current cfg)或添加或删除副本集,这似乎是固定的。

2 个答案:

答案 0 :(得分:1)

在这两种情况下,您的副本设置似乎都很健康。所有辅助代理都应用了主要操作日志中的最后一个操作(optime / optimeDate是相同的),而且lastHeartbeat稍微落后于dev 6时间。关于lastHeartbeatMessage请参考this jira问题,即:

  

当辅助选择要同步的来源时,它将选择一个节点   oplog比self更新(不等于),所以在启动之后,所有节点都是如此   有一些数据,oplog会相同,所以二次无法选择   sync souce,写操作发生后写,primary将有   较新的oplog,secondary可以成功选择一个目标来同步,   错误信息将消失。

答案 1 :(得分:0)

错误"无法找到要从"同步的成员我通常与副本集成员无法相互交谈。要么是因为防火墙或凭证问题。

我知道您可以ping服务器,但是您是否尝试使用mongoclient连接到其中一个辅助服务器的主要mongo实例?

mongo vpc-dev-app-06:27017

如有必要,请使用适当的用户凭据。

作为升级的一部分,mongod.conf中是否有任何可能的变化?