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
  • 架构优化:层级复制(主->从->从)

最后更新: