面试题答案
一键面试- 全量重同步:
- 从节点首次连接主节点,或从节点判定无法进行部分重同步时,会使用全量重同步。
- 主节点收到从节点发送的PSYNC命令,若不支持部分重同步,主节点执行BGSAVE生成RDB文件,并将文件发送给从节点。同时,主节点会在内存中缓存新的写命令。
- 从节点清空现有数据,加载主节点传来的RDB文件。加载完成后,从节点接收主节点缓存的写命令,完成全量重同步。
- 部分重同步:
- 部分重同步的条件:网络短暂中断恢复后,若从节点保存的主节点runId与当前主节点一致,且从节点记录的复制偏移量在主节点的复制积压缓冲区(repl_backlog)范围内,就可以进行部分重同步。
- 部分重同步流程:从节点向主节点发送PSYNC命令,携带主节点runId和复制偏移量。主节点判断可以进行部分重同步后,从复制积压缓冲区中找到从节点偏移量之后的数据,发送给从节点。从节点接收这些数据并应用,从而恢复数据同步,保障数据一致性。