MongoDB-复制集选举规则

选举规则

  • 一旦发现主节点没有响应 / 发送心跳请求, 那么副节点就会认为主节点挂了
  • 一旦发现主节点挂了, 任意一个副节点都可以发起选举
  • (发起选举的节点我们称之为 候选节点, 每一个节点内部都有一个 选举计数器)
  • 发起选举的节点会给自己先投一票, 然后将自己的票数依次发送给其它节点

其它节点收到投票请求后, 会先利用发送过来的票数同步自己计数器的票数:

  • 然后再对比自己的数据和候选节点的数据哪个更完整

  • 如果自己的更完整, 那么会投出反对票

  • 如果候选节点的更完整, 那么会投出赞同票

  • 最后如果超过半数的节点投出赞同票, 那么候选节点就会变成主节点

  • 最后如果没有超过半数节点投出赞同票, 那么其它节点会重新发起选举, 重复上述过程

!> 一个复制集中最多只能有 7 个投票节点

!> 如果某个节点没有返回投票结果, 那么默认就是不赞同, 挂掉的节点不会返回结果

!> 因为选举需要超过半数节点同意, 才会将副节点变成主节点, 所以在企业开发中一个复制集至少需要 3 个节点,否则一旦主节点挂了, 永远无法完成投票

!> 因为选举需要超过半数节点同意, 才会将副节点变成主节点, 所以在企业开发中节点的个数最好是 奇数

触发选举的其它条件

  • 初始化复制集时, 会自动触发选举
  • 有新节点加入时, 会自动触发选举
  • 当前主节点挂掉时, 会自动触发选举
posted @   BNTang  阅读(37)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示