延迟指标怎么看
复制延迟指标是最容易被误读的一个数字:它本质上只是重放线程当前处理事件的时间戳,与拉取线程最新事件的时间戳之差。上游没有写入时它恒为零,大事务执行途中它长时间不动,上下游时钟不一致时还会出现偏差甚至负数被显示为零。所以判断复制是否真的追平,要结合位点差与事务集合,而不是只看这一个数字。
基本信息
| 含义 | 重放进度时间戳与已拉取最新时间戳之差 |
|---|---|
| 正常表现 | 有写入时逐步收敛到零附近 |
| 失真场景 | 无写入时恒为零、大事务执行中不动、时钟漂移 |
| 更可靠手段 | 写入心跳记录并实测延迟 |
| 辅助判断 | 位点差、中继日志占用、事务集合比较 |
典型使用场景
- 巡检:观察延迟趋势判断复制是否健康
- 切换前评估:确认从库是否已经追平上游
- 读写分离场景:判断读请求能否安全落到从库
- 大事务之后观察:确认积压是否在消化
- 延迟告警接入:与位点差一起使用,避免单指标误报
心跳观测(推荐)
心跳观测(推荐)
# 上游周期写心跳记录
pt-heartbeat --host=10.0.0.10 --user=monitor --password='***' \
--update --database=heartbeat --interval=1
# 从库端读取真实延迟
pt-heartbeat --host=10.0.0.11 --user=monitor --password='***' \
--monitor --database=heartbeat读数与失真对照
| 观察到的值 | 可能原因 | 判读 |
|---|---|---|
| 延迟为零 | 上游确实无写入,或已经追平 | 结合位点差确认,不要直接当健康 |
| 延迟十几秒且稳定 | 有持续写入,重放跟得上 | 观察是否缓慢下降 |
| 延迟持续增长 | 重放能力不足或有大事务 | 看中继日志占用与线程状态 |
| 延迟长时间不变 | 正在重放大事务 | 事务结束后会跳变,属正常波动 |
| 延迟为负显示为零 | 从库时钟慢于上游 | 校准时钟,改用心跳方案 |
| 拉取线程已断但延迟为零 | 中继日志刚被消化完 | 最危险的假象,必须查线程状态 |
只看到延迟为零并不代表复制健康:拉取线程可能已经断开,而中继日志恰好被消化完,这种情况必须结合线程状态一起判断。
需要可比较的真实延迟时,用周期写入心跳记录再在从库读取的方式测量,它不受大事务与时钟漂移影响。
延迟判断检查清单
- 延迟指标与线程状态一起看,不单独下结论
- 切换等关键场景用事务集合作为追平判据
- 上下游主机保持时钟同步
- 监控里同时采集位点差与中继日志占用
- 大事务期间避免用延迟值做切换决策
延迟的绝对值要和业务容忍度对齐:读请求容忍几秒延迟时,十几秒的稳定延迟只是噪声;而对实时性要求高的业务,这个数字本身就是故障信号。