MST

星途 面试题库

面试题:MongoDB副本集故障切换机制的基本流程

请简述MongoDB副本集故障切换机制的基本流程,包括哪些节点参与以及主要步骤是什么?
30.4万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

节点参与

  1. 主节点(Primary):负责处理客户端的读写操作。
  2. 从节点(Secondary):复制主节点的数据,作为备份,可用于读操作。
  3. 仲裁节点(Arbiter):不存储数据,仅参与选举过程,帮助确定新的主节点。

主要步骤

  1. 心跳检测
    • 副本集中每个节点通过心跳机制(默认2秒一次)相互监测状态。主节点向从节点和仲裁节点发送心跳消息,从节点也向主节点和其他从节点发送心跳。
  2. 故障检测
    • 如果从节点在10秒内(可配置)没有收到主节点的心跳,从节点会认为主节点可能发生故障。
    • 从节点会发起选举流程。
  3. 选举流程
    • 符合选举条件的从节点(如数据最新、优先级合适等)会向其他节点发送选举请求(VoteRequest)。
    • 收到选举请求的节点(包括仲裁节点)根据一定规则(如数据一致性、节点优先级等)决定是否投票。
    • 一个节点必须获得大多数节点(超过副本集节点数一半)的投票才能成为新的主节点。
  4. 故障恢复
    • 新的主节点选举出来后,会通知其他节点,整个副本集进入新的主从状态。
    • 故障的主节点恢复后,会作为从节点加入到副本集,重新开始复制新主节点的数据。