面试题答案
一键面试副本集成员加入
- 成员发现:新成员通过配置文件或动态配置,得知副本集其他成员的地址信息。作用是让新成员能够定位到副本集内已有的节点,为后续通信和同步做准备。
- 握手与身份验证:新成员与现有成员建立连接,进行握手操作,同时根据配置进行身份验证(若开启了身份验证)。确保新成员的合法性,防止非法节点加入副本集。
数据同步前准备
- 确定同步源:新成员会选择一个现有成员作为同步源(通常是优先级高、数据较新的节点)。保证同步的数据是较新且完整的,为准确同步数据奠定基础。
- 获取oplog:同步源会将oplog(操作日志)信息发送给新成员,oplog记录了数据库的所有写操作。新成员通过获取oplog来了解从某个时间点开始数据库发生的所有更改,以便后续重演这些操作达到数据同步。
数据同步
- 全量同步:新成员从同步源获取整个数据集的快照,进行全量数据复制。使新成员拥有与同步源基本一致的数据基础。
- 增量同步:在全量同步完成后,新成员开始应用从同步源获取的oplog中的操作,持续同步新产生的写操作。确保新成员的数据与其他成员实时保持一致。
同步完成与状态更新
- 同步完成确认:当新成员完成全量和增量同步,确认数据与其他成员一致后,标志同步完成。
- 状态更新:新成员将自身状态更新为可参与副本集的正常状态(如SECONDARY等),开始接收读请求(如果配置允许从副本读取数据)并准备在必要时参与选举成为 PRIMARY。使副本集恢复完整的功能和冗余性。