INFO replication 是什么
INFO replication 是判断主从健康的主入口。主库视角能看到自己的角色、连接的从库数量,以及每个从库的 offset 与 lag;从库视角能看到主库地址、连接状态、最近一次收到数据的时间、是否正在全量同步,以及自己的 offset。把两侧 offset 相减就是落后字节数,比单看滞后秒数更直接。
基本信息
| 用法 | INFO replication,只取这一分节开销更小 |
|---|---|
| 主库字段 | role、master_repl_offset、connected_slaves、slaveN 行 |
| 从库字段 | master_link_status、master_last_io_seconds_ago、slave_repl_offset |
| 状态字段 | master_sync_in_progress 为 1 表示正在全量同步 |
| 只读标记 | slave_read_only 为 1 表示从库拒绝写入 |
典型使用场景
- 日常巡检:确认两个实例的角色、连接状态与偏移量
- 判断延迟:比较主库与从库的 offset 差值及其变化趋势
- 识别全量同步:master_sync_in_progress 为 1 时从库数据暂不可信
- 确认只读:核对 slave_read_only,避免从库被误写
- 核对积压:看 repl_backlog_active 是否开启并评估积压上限
- 故障恢复:切换后确认新主与各从库已重新建立关系
- 容量规划:结合 backlog 大小与写入速率评估内存开销
主库与从库视角
主库与从库视角
# 主库视角
INFO replication | grep -E 'role|connected_slaves|master_repl_offset|repl_backlog'
# role:master
# connected_slaves:2
# slave0:ip=10.0.0.11,port=6379,state=online,offset=123456789,lag=0
# master_repl_offset:123456800
# 从库视角
INFO replication | grep -E 'role|master_host|master_link_status|slave_repl_offset|master_sync_in_progress'
# role:slave
# master_link_status:up <- 断开时为 down
# master_last_io_seconds_ago:0 <- 变大说明主库没有消息
# master_sync_in_progress:0 <- 1 表示正在全量同步
# slave_repl_offset:123456700字段读法
| 字段 | 含义 | 异常表现 |
|---|---|---|
| master_link_status | 从库与主库的连接状态 | down 说明连接已断,需查网络与账号 |
| master_last_io_seconds_ago | 距上次收到主库数据的时间 | 持续增大说明主库无写入或链路异常 |
| slave_repl_offset | 从库已回放的偏移 | 与主库差值扩大说明延迟在增长 |
| lag | 从库落后的近似秒数 | 主库侧字段,全量同步期间不准确 |
| state | 从库连接状态 | send_bulk 表示正在全量传输 |
offset 是单调递增的字节量,不是命令条数;判断延迟要看差值的变化趋势,单次差值会受写入突发与批量命令影响。
从库重启或触发全量同步时 offset 会大幅跳变,此时比较延迟没有意义;应等 master_sync_in_progress 回到 0 后再观察。