是否可以创建仅包含1个主要成员和1个辅助成员的MongoDB副本集?
我希望延迟副本集,该副本集将延迟24小时从主数据库复制数据。我知道我可以将仲裁器放在其中一台服务器上(主服务器或辅助服务器,我知道不建议这样做,但我唯一的愿望是在两台服务器上运行此配置),它可以正常运行,但是我想知道是否有可能彻底将仲裁员踢出去。
它看起来像这样:

最佳答案

简短的回答:不。

长答案:MongoDB中自动故障转移的工作方式是副本集需要合格多数才能成功选出新的主数据库。拖延的议员在选举中确实有选票。因此,如果您的两个节点中的任何一个发生故障,副本集都会发现它不具有多数,即使当前主节点没有发生故障,它也会下台。因此,您实际上要做的是翻倍,使副本集失败的机会。就RAM占用率,CPU甚至磁盘空间(使用--smallfiles --no-journal --noprealloc或配置文件中设置的等效选项运行)而言,仲裁程序是一个非常便宜的过程。请注意,提到的选项是可以安全使用的,因为仲裁器实际上仅检查数据承载节点的心跳。例如,您可以将仲裁程序放在应用程序服务器上。

免责声明:强烈建议不要使用以下步骤。继续需要您自担风险。

您可以将延迟服务器的票数设置为0。这样,在延迟成员失败的情况下,未延迟节点将要求进行选举,得出的结论是,它是副本集中唯一的节点,并且拥有多数节点(1/1)的投票数,并将继续按预期工作。此操作过程需要引起注意,因为如果以后将成员添加到副本集并有必要重新配置副本集,您将再次获得偶数票。它还对网络碎片问题产生了严重影响。再次:使用后果自负

关于mongodb - 两个没有仲裁器的MongoDB副本集节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25502410/

10-13 06:25