PR #2638 合并后,Slave 超时后重新与 Master 建连,可能会有更长的时间处于 "connecting" 状态。此时主从已经建连成功,但若用户欲获取主从数据同步状态,只能查看日志,很不方便。
为了方便用户或其他旁路系统实时获取 Pika 的数据同步状态,我们在 PR #2656 中新增了主从数据同步 info 命令指标 ”repl_connect_status“。
向 Slave 端发送 info/info replication 命令进行获取,该值也会出现在 Slave 实例上,对 Master 发送 info 命令是取不到该指标的
每个 db 均有自己的 repl_connect_status 值,以 \n 分隔,示例如下:
repl_connect_status: db0:syncing_full db1:syncing_full db2:try_to_incr_sync db3:try_to_incr_sync db4:try_to_incr_sync db5:try_to_incr_sync db6:try_to_incr_sync db7:syncing_full
”repl_connect_status“ 各个指标解释如下列表:
| 指标 | 解释 |
|---|---|
| no_connect | 主从断联 / 无主从连接 |
| try_to_incr_sync | 瞬时状态:从节点处于 TrySync 状态,即将发出 TrySync 请求来建立主从连接 |
| try_to_full_sync | 瞬时状态:从节点处于 TryDBSync 状态,即将发出 TryDBSync 请求来进行全量同步 |
| syncing_full | 主从节点正在进行全量同步 |
| connecting | 大部分情况下是瞬时状态,但在极端情况下,该状态可能持续几十秒到几分钟:从节点发出建联请求 (TrySync Req) 后,在收到并处理主节点回复的 TrySync Resp 前,从节点都处于这一状态中 |
| error | 从节点状态错误,需介入排查 |
旁路监控告警系统可以向 Slave 端发送
info or
info replication 命令,实时获取 Slave 数据同步状态。当 master_status_link 为 down 时,可以使用 repl_connnect_status 判断是否进行告警。
有如下一些告警策略建议:
只有当所有 DB 的 repl_connect_status 都为 connected 时,master_status_link 才会为 up,只要有任何一个 db 不处于该状态,master_status_link 均为 down
repl_connect_status 指标可以帮助用户或其他系统实时了解 Pika 主从数据同步的状态,对于运维监控和告警策略的制定有重要意义。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70037778/viewspace-3017880/ ,如需转载,请注明出处,否则将追究法律责任。