首页/数据/数据库速查/哨兵事件订阅(+switch-master / +sdown)
Redis 运维与场景124 条

哨兵事件订阅(+switch-master / +sdown)

哨兵通过 Pub/Sub 广播事件:PSUBSCRIBE 订阅 * 可拿到全部;运维系统可据此触发告警、刷新连接池、记录时间线。

数据库速查数据更新于 2026-10-13

订阅哨兵的事件

哨兵在故障切换过程中会通过发布订阅广播事件,订阅 +switch-master 等频道就能让运维系统在主从切换完成时立即感知,进而告警、刷新连接池或记录时间线。事件是即时推送、不做持久化的,断连期间的消息不会补发,因此订阅之外必须保留定期轮询作为兜底。

基本信息

适用Redis Sentinel 全版本
默认端口26379
订阅方式PSUBSCRIBE 模式订阅或 SUBSCRIBE 指定频道
兜底手段定期执行 SENTINEL get-master-addr-by-name 轮询主库地址

订阅示例

订阅示例
redis-cli -p 26379 PSUBSCRIBE +            # 订阅全部事件,便于先观察再筛选
redis-cli -p 26379 PSUBSCRIBE +switch-master   # 只订阅切换完成事件(最常用)
redis-cli -p 26379 PSUBSCRIBE +sdown       # 主观下线与恢复下线
redis-cli -p 26379 PSUBSCRIBE +odown       # 客观下线需要多数哨兵认同
redis-cli -p 26379 PSUBSCRIBE +promoted-slave   # 从库被提升为主库
redis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster   # 轮询兜底,补齐断连期间的事件
redis-cli -p 26379 SENTINEL sentinels mymaster                 # 查看其他哨兵节点

常见事件与处置

事件含义运维动作
+switch-master主库切换完成刷新连接池、记录时间线、触发通知
+sdown / -sdown主观下线与恢复关注是否持续,单点误判会自行恢复
+odown / -odown客观下线与恢复多数哨兵认同,通常伴随切换
+promoted-slave从库被提升核对新主地址与数据量
+slave-reconf-sent / done从库重配完成确认其他从库已指向新主

典型使用场景

  • 切换后自动刷新应用连接池,减少人工介入
  • 把切换事件写入变更时间线,用于事后复盘
  • 监控告警:切换频繁说明实例或网络不稳定
  • 自动化脚本触发:切换后执行拓扑校验与通知
  • 多套环境统一订阅,集中记录所有集群的切换记录
发布订阅通道不持久化、不重放:订阅进程断线期间的事件会全部丢失,必须配合定期轮询主库地址作为兜底。
消息体包含事件名与主库名,切换事件还会带上旧地址与新地址,解析这些字段即可自动更新下游配置。

易错点

  • 只依赖事件通知不做轮询:订阅断线后完全失去感知,切换发生却毫不知情
  • 把事件频道当可靠队列使用:Pub/Sub 不持久化,断连即丢消息
  • 订阅 +sdown 就触发告警:主观下线可能被多数哨兵否定并自行恢复,易产生噪声
  • 只订阅一个哨兵节点:该哨兵异常时事件中断,应同时订阅多个哨兵
  • 收到 +sdown 就立即人工介入:主观下线常会自行恢复,先看是否升级为客观下线

数据来源与参考

  • Redis 官方文档: Sentinel 事件
  • Redis 官方文档: SENTINEL PSUBSCRIBE

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌