问题描述
操作redis发现原有Master变成slave,其他slave成master,切换较频繁
问题分析
查看redis服务器sentinel日志,发现主机频繁在凌晨左右sentinel哨兵检查到master挂了,主备切换,排查为每天凌晨左右对hash:sms:qxt:mobile:content:day队列进行删除触发的切机,队列量级过大,删除时导致redis服务器卡住,切机。
问题处理
队列改用分批删除,避免对大数据量队列进行删除而引起切机
补充:redis一主一从一哨兵,第一次主从切换成功,再次主从切换无法正常执行?
自己在服务器学着搭建redis主从复制和哨兵模式。为了简单,一开始只是搭建了一主(port 9001),一从(port 6379),一哨兵(26379)
主从哨兵都在一台服务器上,并且主从服务器均设置了密码:123456
先按照 主-->从--->哨兵 的顺序依次启动,日志和执行命令都没有问题,然后shutdown 9001服务器,哨兵模式顺利将主节点切换到6379,然后在启动9001的redis,发现9001的服务器变为slave ;
但是再次将6379(当前的master)宕机,无法继续切换
如下:
一开始是以为配置文件有问题,来回检查了几遍,后来发现这个情形(6379为master ,9001为slave),哪怕在master存放新的key-value,也无法同步到9001
查看了一下9001的redis的info配置发现
我的6379的服务器是正常运行的,但是9001没法连接到相关的6379服务器,自然也就没法对master(6379)的服务器进行同步了
想到6379设置了服务密码,我就在9001的redis里加了如下配置
修改完配置之后,重启服务,再次模拟刚刚的情形,二次切换也成功了
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。