我正在尝试使用 MongoDB 副本集来测试高可用性场景。我设置了一个 3 服务器副本集。当我停止主服务器时,剩余的 2 个服务器中的一个将成为主服务器。之后,当我停止新的主服务器时,最后一个剩余的服务器显示其状态为辅助服务器。
最后一个服务器是否应该自动成为主服务器?还是我需要配置一些设置才能实现这一点?
答案1
每个 MongoDB 副本集最多只有一个主节点,该主节点按法定人数选举产生。副本集成员必须严格多数投票给主节点(即n
/2+1 票,其中n
是配置的副本集成员数)。
如果在 3 个成员的副本集中只有一个幸存成员,则该成员无法被选为(或保持)主要成员,因为只有一票可用。
要求获得多数票是为了避免在网络分区等情况下出现多个主节点。例如,如果所有 3 个副本集成员在技术上都处于“启动”状态,但由于网络问题而无法相互通信,则只有拥有多数副本集成员的分区才能维持主节点。
有关详细信息,请参阅For more information, see副本集选举在 MongoDB 手册中。