You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB副本集节点宕机时的选举规则与多数派计算疑问

MongoDB副本集多数派计算与选举逻辑解析

核心结论:多数派的计算依据

计算多数派的公式 n/2 + 1 中的 n 指的是副本集的总投票节点数(无论节点当前是否存活),而非当前存活的节点数。这里的「投票节点」是指副本集中配置了投票权的节点(默认情况下,所有数据节点和仲裁节点都拥有1票投票权,可通过 members[n].votes 配置修改)。

你的测试场景差异原因

场景1:5节点副本集(4数据+1仲裁)

此集群总共有5个投票节点,多数派阈值为 5/2 + 1 = 3 票。当关闭3个节点(含仲裁)后,仅剩余2个投票节点,最多只能投出2票,无法达到3票的多数派要求,因此无法完成主节点选举。剩余的2个节点只能维持secondary状态,集群无法提供写服务,默认读操作也会失败。

场景2:3节点无仲裁副本集

此集群总共有3个投票节点,多数派阈值为 3/2 + 1 = 2 票。关闭1个节点后,剩余2个投票节点可以互相投出支持票,总票数达到2票,满足多数派要求,因此能成功选举出主节点,集群可正常提供读写服务。

读写关注的影响

  • 写关注:默认写操作要求主节点确认,若集群无主节点则写操作直接失败;若设置 w: majority 写关注,需要等待多数投票节点确认写入,当存活节点数不足多数时,写操作会持续阻塞直到满足条件,或因超时失败。
  • 读关注:默认读操作指向主节点,无主节点时默认读操作失败;若配置 readPreference: secondary 或 secondaryPreferred,在仅有secondary节点的情况下可以读取数据,但读取到的可能不是最新的集群数据。

内容的提问来源于stack exchange,提问作者Noam Guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 19:38:22