redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
CONFIG GET replica-read-only
# 应用侧订阅切换事件并重建连接池

哨兵切换完成后应用写缓存全部失败,读请求正常,重启应用才能恢复。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,客户端仍连着原主节点,该节点降级为副本后拒绝写入。

围绕「Redis 只读副本」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。改完隔一天再看一次,当场正常不代表能稳住。

测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

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

处理上按这个顺序:确认当前主节点地址;客户端接入哨兵或集群模式自动发现;切换后触发连接重建。

改完只确认一件事:切换后应用能自动写入新主节点,缓存写入成功率恢复。

作者 9823189