暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

redis配置文件损坏处理案例

IT那活儿 2021-06-23
4611
一. 问题现象
redis集群一台主机因硬件故障宕机恢复后,启动其某个port_x端口服务时,启动失败。查看日志port_x.log,报错信息“Unrecoverable error: corrupted cluster config file”,其意思是不可恢复的错误:集群配置文件损坏。

二. 处理方法
1) 删除损坏的配置文件

删除port_x端口目录~/cluster/port_x中的配置文件nodes.conf

注:nodes.conf配置文件名,在~/cluster/port_x/redis.conf中配置,参数为cluster-config-file。如下图:

2)启动port_x端口服务

cd ~/cluster/port_x

nohup redis-server ./redis.conf &

3)检查集群信息

执行命令redis-cli -h xx.xx.xx.xx -p port_x -a admin cluster nodes检查集群信息,红色部分是异常的主机ip和服务端口

图:目前状态是master,fail,noaddr状态没有slots数据

4)剔除节点

redis-cli -h xx.xx.xx.xx -p port_x -a admin
CLUSTER FORGET 3d44f1e574aa7ba4e192450e5002fe0f98014731,红色部分为上图异常的节点

5)加入集群

redis-cli -h xx.xx.xx.xx -p port_x -a admin

CLUSTER MEET xx.xx.xx.xx port_x

6)指定为从节点

执行命令redis-cli -h xx.xx.xx.xx -p port_x -a admin cluster nodes检查集群信息

从上图可知:master节点59463670386e78bfe6eed6c3e99ed3b488fb1ba6只有一个slave,其他master有2个从节点。所以将xx.xx.xx.xx主机port_x端口服务指定为59463670386e78bfe6eed6c3e99ed3b488fb1ba6的从节点

redis-cli -h xx.xx.xx.xx -p port_x -a admin
CLUSTER REPLICATE 59463670386e78bfe6eed6c3e99ed3b488fb1ba6

如下图:master节点59463670386e78bfe6eed6c3e99ed3b488fb1ba6从节点个数已为2个

三. 小结与思考
本案例中,redis主机宕机恢复后,启动服务时,日志显示配置文件损坏,查看配置文件nodes.conf内容时,发现其内容只有部分,被异常截取了。究其原因是主机宕机导致,是redis服务被异常停止。

综上所述,不能因为redis采用了集群模式,而不注重规范化操作,停止redis集群服务时,不能kill -9 pid,也不可直接重启或停止redis主机。停止redis服务可采用如下命令:

redis-cli -h xx.xx.xx.xx -p port_x -a admin shutdown  
或者
ps -ef|grep redis-server|grep -v grep|grep port_x|awk '{print "kill "$2}'|sh

END

更多精彩干货分享

点击下方名片关注

IT那活儿

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论