首页/数据/Redis 进阶速查/repl-backlog-size 的内存占用
内存与管理99 条

repl-backlog-size 的内存占用

主库复制积压缓冲 repl-backlog-size 常驻占用内存(默认 1MB,生产常调大),用于从库短暂断连后的增量续传。

Redis 进阶速查数据更新于 2026-10-13

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 释放,纯单机部署没有这部分开销。

易错点

  • 生产库沿用默认 1MB,写入量大时一次网络抖动就触发全量重同步,主库磁盘与网络同时被拖累
  • 只调从库侧参数不去动主库的积压窗口,排查方向从一开始就偏了
  • 调大后没写进配置文件,重启回到默认值,问题复现却查不出原因
  • 按单从库估算缓冲,实际多从库共享一份,窗口被更快消费掉

数据来源与参考

  • Redis 官方文档:复制积压缓冲说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌