repl-backlog-size 是什么
repl-backlog-size 定义主库上复制积压缓冲的大小,默认 1mb。它是由同一主库下所有从库共享的一份环形缓冲:从库短暂断连后,只要偏移量还落在这个窗口内,就能做部分重同步,只补缺失的那段命令;落到窗口外就只能全量重同步,代价是重新生成并传输 RDB。这份缓冲是主库的常驻内存开销。
基本信息
| 配置项 | repl-backlog-size |
|---|---|
| 默认值 | 1mb |
| 共享范围 | 同一主库下所有从库共用一份,不是每个从库一份 |
| 配套项 | repl-backlog-ttl,默认 3600 秒,最后一个从库断开后延迟释放 |
| 生效方式 | CONFIG SET 动态生效,建议同步写进配置文件 |
典型使用场景
- 从库网络抖动频繁:调大缓冲,避免每次抖动都触发全量重同步
- 主库写入量大:按写入速率乘以可容忍的断连时长估算缓冲需求
- 多从库环境:缓冲被多个从库共同消费,从库越多越该调大
- 容灾演练:人为断开从库后观察是否走了部分重同步
- 内存预算:缓冲是常驻开销,调大前把余量算进容量规划
查看与调整
查看与调整
redis-cli CONFIG GET repl-backlog-size # 当前缓冲大小
redis-cli CONFIG SET repl-backlog-size 64mb # 调大到 64MB,同时落盘到配置文件
redis-cli INFO replication # 看 master_repl_offset 与从库偏移差
redis-cli INFO stats | grep -E 'sync_full|sync_partial_ok|sync_partial_err' # 全量与部分重同步次数
redis-cli INFO replication | grep -E 'backlog' # backlog 活跃状态与首个字节偏移关键指标读法
| 指标 | 含义 | 异常表现 |
|---|---|---|
| master_repl_offset | 主库当前写入偏移 | 持续增长属正常 |
| 从库 offset 差值 | 从库落后主库的字节数 | 长期不收敛说明复制滞后 |
| sync_full | 全量重同步次数 | 持续上升说明积压窗口偏小 |
| sync_partial_ok | 部分重同步成功次数 | 与 sync_full 对比看调参是否有效 |
估算思路:缓冲大小大于等于主库写入速率(字节每秒)乘以可容忍的断连秒数,再按从库数量留出余量,最后用 sync_partial_ok 与 sync_full 的实际变化验证。
积压缓冲只在存在从库时分配,最后一个从库断开后按 repl-backlog-ttl 释放,纯单机部署没有这部分开销。