MST

星途 面试题库

面试题:Redis集群中复制的基本原理是什么

请阐述Redis集群中主从复制的基本流程,包括数据同步的方式以及主从节点角色的职责,同时说明在复制过程中可能出现的数据不一致问题及简单应对措施。
21.3万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

主从复制基本流程

  1. 建立连接:从节点向主节点发送 SYNC 命令(Redis 2.8 之前)或 PSYNC 命令(Redis 2.8 及之后),请求进行数据同步。主节点接收到命令后,会为从节点建立一个数据同步的连接。
  2. 全量同步(初次同步或部分场景下)
    • 主节点执行 BGSAVE:主节点收到同步请求后,执行 BGSAVE 命令,将当前数据库的数据生成 RDB 文件,并在内存中记录此后执行的写命令。
    • 发送 RDB 文件:主节点将生成的 RDB 文件发送给从节点,从节点接收到 RDB 文件后,会先清空自己的数据,然后加载 RDB 文件中的数据。
    • 发送写命令:主节点将记录在内存中的写命令发送给从节点,从节点执行这些命令,使自己的数据状态与主节点保持一致。
  3. 增量同步(一般在网络中断恢复等场景):在 Redis 2.8 及之后,从节点和主节点使用 PSYNC 命令进行同步。如果从节点在断开连接后重新连接主节点,主节点能够识别从节点之前同步的进度,只将断开连接期间主节点执行的写命令发送给从节点,从节点执行这些命令来完成数据同步。

数据同步方式

  1. 全量同步:适用于初次连接或主节点无法识别从节点同步进度的情况,通过传输完整的 RDB 文件来同步数据。
  2. 增量同步:当主节点能够识别从节点的同步进度时,只传输断开连接期间产生的写命令,减少数据传输量。

主从节点角色职责

  1. 主节点职责
    • 处理客户端的写请求,并将写操作记录在内存缓冲区。
    • 生成 RDB 文件,并将其发送给从节点。
    • 向从节点发送记录的写命令,确保从节点数据与自身一致。
  2. 从节点职责
    • 向主节点发送同步请求,建立数据同步连接。
    • 接收主节点发送的 RDB 文件并加载数据。
    • 接收并执行主节点发送的写命令,保持与主节点数据同步。

复制过程中可能出现的数据不一致问题及应对措施

  1. 问题
    • 网络延迟或中断:可能导致主从节点之间的数据同步延迟,从节点的数据可能滞后于主节点。
    • 主节点故障恢复:在主节点故障恢复后,可能会出现数据丢失或不一致的情况。
  2. 应对措施
    • 监控与报警:通过监控工具实时监测主从节点的同步状态和延迟情况,设置合理的阈值,当出现异常时及时报警。
    • 自动故障转移:使用 Redis Sentinel 或 Redis Cluster 等机制,实现主节点故障时的自动故障转移,选举新的主节点,并重新同步数据。
    • 数据补偿:可以通过定期的数据比对和修复机制,如在从节点定期与主节点进行数据校验,发现不一致时,重新进行全量或增量同步。