MST

星途 面试题库

面试题:MongoDB副本集灾难恢复中的选举机制及影响

在MongoDB副本集中,当主节点发生故障导致灾难时,选举新主节点的机制是怎样的?这种选举机制对灾难恢复后的数据库可用性和数据一致性有哪些影响?
31.2万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

选举机制

  1. 心跳检测:副本集中成员通过心跳机制互相监测状态。当主节点发生故障,从节点和仲裁节点(若存在)在一定时间内收不到主节点心跳,判定主节点故障。
  2. 投票机制
    • 每个具有选举权的节点(通常数据节点才有选举权,仲裁节点无选举权)都有一票。
    • 要成为新主节点,候选节点需获得大多数投票(超过副本集成员总数一半的票数)。例如,一个包含5个成员(数据节点)的副本集,新主节点需获得3票。
    • 候选节点发起选举请求,向其他具有选举权的节点发送请求,其他节点根据自身状态(如数据的最新程度、优先级配置等)决定是否投票。
  3. 优先级
    • 副本集成员可配置优先级(0 - 1000),优先级高的节点在选举中更有优势。优先级为0的节点不能成为主节点。
    • 若有多个高优先级节点,数据最新的节点更可能赢得选举。

对数据库可用性和数据一致性的影响

  1. 可用性
    • 快速恢复:选举机制能快速选出新主节点(通常在数秒到数十秒内),保障数据库对外服务的可用性,应用程序可尽快恢复读写操作。
    • 短暂中断:选举期间,数据库会短暂无法提供写服务,读服务可能也会受到一定影响(如部分从节点可能在参与选举过程中暂停数据同步),但总体影响时间较短,对业务影响相对较小。
  2. 数据一致性
    • 多数派写入保证:选举机制基于多数派投票,新主节点的数据必然是多数节点认可的最新数据,这确保了数据一致性。只有当写入操作在多数节点成功,才会被视为成功,所以新主节点的数据不会丢失已确认的写入。
    • 可能的数据同步延迟:选举完成后,新主节点可能需要与部分从节点进行数据同步,以确保所有节点数据一致。在同步完成前,可能存在数据不一致的短暂窗口,但MongoDB通过 oplog(操作日志)等机制保障最终一致性。