03 主从复制

主从复制

副本通过复制 ID 与 offset 尝试续传;缺失历史不在 backlog 中时,转为全量同步。
版本:Redis Open Source 8.10.3;核实日期:2026-11-12。官方在线文档可能继续更新,源码链接固定到对应发布标签。图为原理抽象,省略非本页重点。
specification { element actor { style { shape person; color amber } } element system { style { color muted } } element component { style { color primary } } element storage { style { shape storage; color green } } } model { r = system '副本' m = system '主节点' back = storage '复制 backlog' snap = storage 'RDB 快照' } views { dynamic view index { title '核心链路' variant sequence r -> m 'PSYNC 携带复制 ID 与 offset' m -> back '检查历史是否仍可续传' alt { when '复制 ID 与 backlog 范围允许续传' { m -> r 'CONTINUE 并发送缺口' } else '需要全量同步' { m -> snap '准备全量快照' snap -> r '传输并加载快照' } } m -> r '持续发送快照之后的写命令流' r -> m 'REPLCONF ACK 回报已处理 offset' } }

关键判断

  • 图中按复制 ID 与 backlog 范围选择续传或全量分支;全量时主节点还需保留快照之后的变化。
  • 复制默认异步,主节点回复客户端时副本可能尚未跟上;offset 表示复制流位置,不是业务事务号。
  • WAIT 可等待指定数量副本确认,但不能单独把系统变成强一致或保证故障转移绝不丢已确认写。

边界

只画单层主从,不展开 Sentinel 选主、Cluster 故障转移及级联副本;断线本身不一定导致全量复制。

官方出处与源码

回到首页 · 上一篇 · 下一篇