一台哨兵持续打印 +sdown master mymaster 10.0.0.11 6379,业务写入超时,十分钟后主库仍没换。日志里能对上时间点,这种反而好排。

只有这一台哨兵认为主库下线,其余哨兵到主库的网络是通的,客观下线要攒够 quorum 票数,票数凑不齐就停在主观下线,永远进不了选举。这一点先确认清楚,后面就不用反复试。

redis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster
redis-cli -p 26379 SENTINEL ckquorum mymaster
redis-cli -p 26379 SENTINEL sentinels mymaster

围绕「Redis 哨兵故障切换」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

处理上按这个顺序:逐台确认哨兵到主库的连通性 先排除单机网络问题;核对 quorum 与哨兵总数的关系 别让票数凑不齐;用 get-master-addr-by-name 直接看当前主库地址。

结果对不对很好判断,手动停掉主库,三十秒内命令返回新地址,业务写入恢复。

作者 9823189