MongoDB的复制集具有自动容忍部分节点宕机的功能,在复制集出现问题时时,会触发选举相关的过程,完成主从节点自动切换.
每个复制集成员都会在后台运行与复制集所有节点的心跳线程,在两种情况下会触发状态检测过程:
1).复制集成员心跳检测结果发生变化,比如某个节点挂了或者新增节点.
2).超过4s没有执行状态检测过程.
在状态检测过程大致包含以下步骤:
1).检测自身是否处于选举过程,如果是,退出本次过程.
2).维护一个主节点的备用列表,列表中所有节点都可能被选举为主节点,每个节点都会检测自身以及全局条件是否满足:
a.是否看见复制集中是否有Majority在线.
b.自身