SENTINEL 常用子命令
运维哨兵靠的是 SENTINEL 系列子命令,它们分成查询与控制两类。查询类用于确认当前认知:监控了哪些主库、主库当前地址是什么、有哪些从库、还有哪些哨兵成员、票数是否足够。控制类用于干预:手动切换、重置状态、增删监控目标。日常排查九成以上用查询类就够了,它们只读、无副作用,可以在故障现场放心执行。
基本信息
| 连接方式 | redis-cli -p 26379 后跟子命令 |
|---|---|
| 查询类 | MASTERS、MASTER、SLAVES、SENTINELS、GET-MASTER-ADDR-BY-NAME、CKQUORUM |
| 状态判定 | IS-MASTER-DOWN-BY-ADDR 查询某主库是否被判定下线 |
| 控制类 | FAILOVER、RESET、MONITOR、REMOVE、SET |
| 配置回写 | 控制类命令改动配置后需要 FLUSHCONFIG 写回文件 |
典型使用场景
- 应用侧排查:确认客户端从哨兵查询到的主库地址与实际拓扑是否一致
- 切换后核对:用 GET-MASTER-ADDR-BY-NAME 确认新主库地址已经生效
- 票数评估:切换失败时用 CKQUORUM 判断是票数不足还是选举受阻
- 成员盘点:用 SENTINELS 确认哨兵数量与预期一致,避免节点缺失导致多数派不足
- 切换演练:主动执行 FAILOVER 验证流程可用,并观察日志中的完整过程
常用查询
常用查询
redis-cli -p 26379 SENTINEL MASTERS # 全部被监控主库
redis-cli -p 26379 SENTINEL MASTER mymaster # 单主库详情含 flags
redis-cli -p 26379 SENTINEL SLAVES mymaster # 从库列表与状态
redis-cli -p 26379 SENTINEL SENTINELS mymaster # 其他哨兵成员
redis-cli -p 26379 SENTINEL GET-MASTER-ADDR-BY-NAME mymaster # 当前主库地址
redis-cli -p 26379 SENTINEL CKQUORUM mymaster # 票数是否足够判定下线
redis-cli -p 26379 SENTINEL IS-MASTER-DOWN-BY-ADDR 10.0.0.11 6379 0常用子命令一览
| 子命令 | 用途 | 是否只读 |
|---|---|---|
| MASTERS | 列出监控的主库与状态 | 只读 |
| MASTER <name> | 单主库详情,含 flags 与当前地址 | 只读 |
| SLAVES <name> | 从库列表、地址与复制状态 | 只读 |
| SENTINELS <name> | 其他哨兵成员与其状态 | 只读 |
| GET-MASTER-ADDR-BY-NAME | 当前主库的地址与端口 | 只读 |
| CKQUORUM | 票数是否够判定客观下线 | 只读 |
| FAILOVER | 手动触发一次故障转移 | 写操作 |
| SET / REMOVE / RESET | 修改监控参数、移除监控、重置状态 | 写操作 |
flags 字段需要逐位解读:同一主库里可能同时出现 master、s_down、o_down、disconnected、failover_in_progress 等标记,它们分别表示角色、主观下线、客观下线、链路断开与正在切换。只看字段名而忽略组合,容易把「正在切换」误判为「已经故障」。
写类子命令改动的是运行期状态,部分改动需要 FLUSHCONFIG 才会写回配置文件。在故障现场优先使用只读命令收集信息,干预操作应明确目的并记录动作,避免多人同时操作把状态改乱。