Skip to content

主从复制 ​

概述 ​

主从复制是Redis高可用的基础,实现数据的读写分离和故障转移。

复制流程 ​

1. 完整同步 ​

主节点 -> bgsave -> 生成RDB -> 发送给从节点 -> 加载RDB

2. 命令传播 ​

同步完成后,主节点将写命令传播给从节点。

psync机制 ​

两种同步方式 ​

方式说明
全量复制首次同步,全部数据
增量复制断线重连,仅同步offset差距

psync实现 ​

c
// 复制偏移量
repl_offset:主节点已发送的字节数
repl_backlog_offset:从节点已接收的字节数

触发条件 ​

  • 从节点首次连接
  • 断线重连,offset在backlog中
  • 主从offset差距过大

面试考点 ​

Q: 主从复制原理? ​

  1. 从节点发送PSYNC请求
  2. 主节点判断使用全量还是增量
  3. 执行bgsave生成RDB
  4. 发送RDB文件
  5. 命令传播同步

Q: 为什么需要复制积压? ​

用于增量复制,保存最近的写命令。如果断线时间过长,超出积压范围,需要全量复制。

Q: 主从延迟如何优化? ​

  • 网络优化:减少网络延迟
  • 配置优化:调整repl-diskless-sync
  • 架构优化:层级复制(主->从->从)

最后更新: