查哨兵状态
查哨兵状态主要靠四个命令:SENTINEL masters 列出被监控的主库及其状态与票数,SENTINEL replicas 列出从库,SENTINEL sentinels 列出其它哨兵,SENTINEL get-master-addr-by-name 直接返回当前主库地址供客户端使用。排查「为什么没有切换」时,还要用 SENTINEL CKQUORUM 确认票数是否够。这些命令可以向任意一个哨兵执行,返回的是它自己掌握、并与其它哨兵同步过的视图。
基本信息
| 常用命令 | SENTINEL masters / master / replicas / sentinels |
|---|---|
| 客户端发现 | SENTINEL get-master-addr-by-name 返回当前主库地址 |
| 哨兵端口 | 默认 26379,需与数据端口分开规划 |
| 关键字段 | flags、num-slaves、num-other-sentinels、quorum |
| 票数检查 | SENTINEL CKQUORUM master-name |
典型使用场景
- 切换之后确认新主地址是否正确
- 排查哨兵之间是否真的互相发现
- 确认从库有没有被正确识别进来
- 核对判定下线与授权切换所需的票数
- 编写客户端或运维脚本读取当前主库地址
常用查询
常用查询
redis-cli -p 26379 SENTINEL masters
redis-cli -p 26379 SENTINEL master mymaster
redis-cli -p 26379 SENTINEL replicas mymaster
redis-cli -p 26379 SENTINEL sentinels mymaster
redis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster
# 输出示例:1) "10.0.0.10" 2) "6379"
redis-cli -p 26379 SENTINEL CKQUORUM mymaster命令与用途
| 命令 | 返回内容 | 用途 |
|---|---|---|
| masters | 所有被监控主库与状态 | 快速总览 |
| master | 单个主库的详细字段 | 看 flags 与票数配置 |
| replicas | 从库列表与状态标记 | 确认从库数量是否正常 |
| sentinels | 其它哨兵及其地址 | 确认哨兵之间互相可见 |
| get-master-addr-by-name | 当前主库地址 | 供客户端做地址发现 |
| CKQUORUM | 票数是否足够 | 判断当前能否发起切换 |
用 get-master-addr-by-name 做客户端发现比直连固定地址可靠得多:主库切换后地址会自动变化,应用只需要重新查询一次哨兵,不必改配置文件。
把 SENTINEL replicas 的输出直接当实时状态使用要先过滤 flags:标记为下线的节点并不一定在正常提供服务,不看标记会得出错误结论。
num-other-sentinels 为 0 说明哨兵之间没有互相发现,多半是网络、端口或对外地址配置问题;这种状态下的高可用形同虚设,必须优先修好。部署完成后建议在每台哨兵上各查一遍,确认彼此可见,再谈高可用体验。