是否可以创建仅包含1个主要成员和1个次要成员的MongoDB副本集? 我希望有一个延迟的副本集,它将从主要数据中复制数据,延迟24小时。我知道我可以在其中一个服务器上安装仲裁服务器(主服务器或辅助服务器,我知道这不建议,但我唯一的愿望是在两台服务器上运行此配置)并且运行正常,但我想知道是否可能完全踢出仲裁者。 它看起来像这样:
答案 0 :(得分:11)
简答:不要。
答案很长:MongoDB中自动故障转移的工作方式是副本集需要合格的多数才能成功选出新的主节点。延迟成员确实在选举中投票。因此,如果节点的 失败,则副本集会发现它没有这个多数,并且即使它没有失败,当前主节点也会降低。所以你基本上做的是加倍让你的副本集失败的可能性。仲裁器是一个非常便宜的过程,在使用--smallfiles --no-journal --noprealloc
或配置文件中设置的等效选项时,使用RAM,CPU甚至磁盘空间。请注意,上述选项可以安全使用,因为仲裁器基本上只检查数据承载节点的心跳。例如,您可以将仲裁服务器放在应用程序服务器上。
免责声明:强烈建议不要使用以下程序。自行承担风险。
您可以将延迟服务器的投票设置为0.这样,如果延迟成员失败,未延迟节点将调用选举,得出结论是它是副本集的唯一在线节点并且它拥有大多数选票(1/1)并将继续按预期工作。此操作过程需要引起注意,因为如果稍后将成员添加到副本集并且需要重新配置副本集,则将再次进行偶数投票。它还对网络碎片问题产生严重影响。再次:使用风险自负
答案 1 :(得分:3)
是的,您可以而且您真正需要做的就是将该成员设置为不符合初级资格。
有关于如何确保无法在此处选出成员的文档:http://docs.mongodb.org/manual/tutorial/configure-secondary-only-replica-set-member/
答案 2 :(得分:2)
是的,有可能但不推荐。这种方法的警告不是自动故障转移。
如果您的主要服务器发生故障,则必须手动将其他服务器作为主服务器。
如果你只是作为主要镜像保持中学,并且手动故障转移就可以了,那么它应该适合你。
更多信息:
答案 3 :(得分:1)
在这种情况下,最好的选择是添加仲裁器。我之前尝试过投票,但是在2个节点上复制,你可能会遇到一些同步问题。