面试题答案
一键面试- 相关机制:
- 心跳机制:副本集中的成员通过心跳消息来保持彼此间的联系,定期向其他成员发送和接收心跳。心跳中包含了成员状态、数据版本等重要信息,正常运行的成员会利用心跳来监控重启成员的状态变化。
- 同步机制:MongoDB 使用 oplog(操作日志)来记录数据库的所有写操作。当重启成员加入副本集后,它会从拥有最新数据的成员(通常是主节点)请求 oplog,通过重放这些操作来使自身数据与其他成员保持一致。
- 流程:
- 启动并加入副本集:重启成员启动后,它会尝试连接到副本集中的其他成员,并向它们表明自己要加入副本集的意图。
- 选举过程(如果需要):如果重启的成员是主节点,且在重启期间其他成员已经选举出了新的主节点,那么会触发新一轮的选举过程,以决定是否将主节点的角色重新赋予该重启成员。
- 同步数据:
- 重启成员确定要同步数据的源节点(通常是主节点)。
- 源节点向重启成员发送 oplog 中的操作记录。
- 重启成员开始重放接收到的 oplog 操作,按照操作顺序依次应用到自己的数据集上,从而使自身数据与源节点的数据逐渐趋于一致。
- 在同步过程中,重启成员会持续与其他成员保持心跳通信,确保同步操作的正常进行,并及时获取最新的 oplog 记录。当同步完成,重启成员的数据就与其他成员保持一致了,此时它就可以正常参与副本集的读或写操作(取决于其在副本集中的角色)。