资讯专栏INFORMATION COLUMN

redis配置文件损坏处理案例

IT那活儿 / 3173人阅读
redis配置文件损坏处理案例
一. 问题现象

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那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129879.html

相关文章

  • 云主机文件系统readonly处理案例

    摘要:通常发生该问题的场景有二一云主机和宿主机繁忙,云主机的请求得不到及时的响应,从而产生磁盘错误,为了保护磁盘数据会分区为只读二云主机被强制关机,导致磁盘出现文件系统错误故障。 本文由作者朱益军授权网易云社区发布。 背景 维护巡检云主机时,发现有一台运行redis的云主机状态显示维护中,登录该实例查看,系统盘变成readonly。本文简单分析该问题出现原因,并为运维人员提供常见处理方法及建...

    neroneroffy 评论0 收藏0
  • Redis持久化存储详解(一)

    摘要:主要是原因根据资料提示,可以能使由于如下原因文本协议的兼容性好前面我们提及到了文件是进行二进制加密,可能不同版本之间会出现不兼容的情况,采用文本协议可以加避免该问题。 为什么要做持久化存储? 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的丢失,因为当服务器关机等一些异...

    wenshi11019 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<