MST

星途 面试题库

面试题:MongoDB副本集中事务一致性与同步机制基础

请阐述MongoDB副本集中保证事务一致性的基本同步机制,包括主从节点之间的数据同步方式及如何确保事务在副本集内的一致性。
49.3万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

主从节点之间的数据同步方式

  1. ** oplog(操作日志)**
    • MongoDB主节点(Primary)将所有的写操作记录到本地的oplog中。oplog是一个特殊的、有固定大小的、以时间戳顺序记录的集合,位于local数据库中。
    • 从节点(Secondary)会定期轮询主节点,获取主节点oplog中自上次同步后新增的记录。
  2. 复制过程
    • 从节点连接到主节点,请求获取oplog的更新。主节点根据从节点当前同步的位置(通过记录在从节点本地的同步点信息),将相应的oplog条目发送给从节点。
    • 从节点接收到oplog条目后,会在本地按照oplog中的操作顺序重放这些写操作,从而保持与主节点数据的同步。

确保事务在副本集内的一致性

  1. 写操作确认机制
    • MongoDB提供了不同级别的写操作确认(Write Concern)。例如,w:1 表示写操作只需在主节点确认写入成功即可返回;w:majority 则要求写操作在大多数节点(包括主节点和足够数量的从节点)确认写入成功后才返回。通过设置合适的写操作确认级别,可以保证事务的部分一致性。当设置 w:majority 时,意味着至少有半数以上节点(包括主节点)写入成功,即使主节点故障,也能从大多数节点中选出新的主节点,并且新主节点的数据是包含了已确认写操作的数据,从而保证数据一致性。
  2. 选举机制
    • 当主节点出现故障时,副本集需要进行选举以选出新的主节点。选举算法基于心跳机制和节点状态。节点之间通过定期发送心跳信息来检测彼此的状态。
    • 只有数据最新且符合选举条件(如具有最新的oplog,节点状态正常等)的从节点才有资格被选举为新的主节点。这样确保新主节点的数据是最完整的,从而维持事务在副本集内的一致性。
  3. 多文档事务支持
    • 在MongoDB 4.0及以上版本,副本集支持多文档事务。事务开始时,会为事务分配一个全局事务编号(GTID)。
    • 主节点协调事务的执行,在事务提交阶段,主节点会将事务涉及的所有写操作记录到oplog中,并确保这些oplog记录按照事务的顺序传播到从节点。从节点重放这些oplog记录时,也会按照事务顺序进行,从而保证事务在副本集内各个节点的一致性。