面试题答案
一键面试基本原理
- 日志记录:主节点(Primary)在执行写操作时,会将这些操作记录到其操作日志(oplog)中。oplog 是一个固定大小的集合,以时间顺序记录了所有影响数据集的写操作。
- 复制传播:从节点(Secondary)会定期轮询主节点,获取主节点 oplog 中新增的操作记录。从节点通过“心跳”机制与主节点保持联系,确定主节点的状态并获取复制信息。
- 应用操作:从节点获取到 oplog 中的操作记录后,会按照记录的顺序在本地数据集上重新应用这些操作,从而使从节点的数据与主节点保持同步。
主要步骤
- 初始化同步
- 当一个新的从节点加入副本集时,它首先要进行初始化同步。从节点会选择一个主节点作为同步源。
- 从节点请求主节点发送其数据的完整快照。主节点生成数据快照并将其发送给从节点。
- 从节点接收到快照后,将其应用到本地,此时从节点拥有了与主节点某一时刻相同的数据状态。
- 持续同步
- 初始化同步完成后,从节点开始持续与主节点同步数据。从节点定期向主节点发送心跳信息,请求获取主节点 oplog 中自上次同步后新增的操作记录。
- 主节点根据从节点的请求,返回相应的 oplog 片段给从节点。
- 从节点接收到 oplog 片段后,按照操作顺序将其应用到本地数据集上,保持与主节点的数据一致性。
- 选举与故障恢复
- 如果主节点发生故障,副本集中的从节点会发起选举。通过投票机制,其中一个从节点会被选举为新的主节点。
- 新主节点选举产生后,其他从节点会自动与新主节点进行同步,将新主节点的 oplog 应用到本地,以保证整个副本集的数据一致性。