复制心跳是什么
主库按 repl-ping-replica-period 指定的间隔(默认 10 秒)向所有从库发送 PING,从库靠这个心跳判断主库是否还活着并刷新最后一次交互时间;如果超过 repl-timeout 仍未收到任何数据,从库才认为链路断开并开始重连。
基本信息
| 参数名 | repl-ping-replica-period |
|---|---|
| 默认值 | 10,单位为秒 |
| 生效位置 | 主库侧生效,向所有从库发送 |
| 动态修改 | 支持,CONFIG SET 后对后续心跳立即生效 |
| 配套参数 | repl-timeout,从库判定失联的超时时间,默认 60 秒 |
相关参数对照
| 参数 | 默认值 | 作用 |
|---|---|---|
| repl-ping-replica-period | 10 秒 | 主库向从库发送心跳的间隔 |
| repl-timeout | 60 秒 | 复制链路的超时判定;从库超时会断开重连并写日志 |
| repl-backlog-size | 1mb | 复制积压缓冲区大小,影响短暂断连后能否增量续传 |
| min-replicas-to-write | 0 | 从库健康数不足时是否拒绝写入,与断连判定联动 |
| master_link_status | - | 从库侧 INFO replication 的链路状态,正常为 up |
查看与调整
查看与调整
redis-cli CONFIG GET repl-ping-replica-period # 主库侧看当前心跳间隔
redis-cli CONFIG GET repl-timeout # 与心跳周期成对评估
redis-cli -h replica INFO replication | grep -E 'master_link_status|master_last_io_seconds_ago'
redis-cli CONFIG SET repl-ping-replica-period 5 # 缩短心跳,故障发现更快
# 心跳只增加固定的小流量,跨机房链路要先确认可接受再缩小周期典型使用场景
- 故障发现调优:希望从库更快察觉主库故障时,适当缩短心跳周期
- 误判排查:链路频繁 up/down 时,先核对心跳周期与 repl-timeout 的比例
- 跨机房部署:评估心跳常驻流量,从库数量多时保持默认更稳
- 监控口径:用 master_last_io_seconds_ago 区分心跳停了还是复制数据停了
- 故障转移后复查:角色变化后确认两侧参数与心跳表现是否一致
心跳是单向 PING,从库据此刷新与主库的交互时间,所以它反映链路存活,不反映数据是否真的追上;复制延迟要看偏移量与 master_last_io_seconds_ago。
心跳周期接近甚至大于 repl-timeout 时,短暂网络抖动就会被判成链路断开,引发反复重连与全量同步。两个参数必须一起评估,周期应明显小于超时值。