searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

记一次redis磁盘故障

2023-05-24 01:45:31
11
0

故障描述

redis机器的一个ssd盘出故障,只能读不能写。其他盘写入速度也很慢。导致redis实例的aof刷新一直失败,最终挂掉。


故障原因

ssd盘早期没有格式化好,4k对齐没做好


处理过程

该redis机器是用来存储collector采集到的日志的meta信息,比较关键,而且一台机器上开启了8个redis实例,所以不好处理。

一开始准备把redis的aof文件转移到一个新的盘上,并且把aof的dir动态更改到其他盘,结果发现redis实例挂掉了,就没有动态更换aof目录。这其中,redis的数据可能有所丢失,不过通过collector和redis日志发现,磁盘挂了后redis写入已经失败,估计有丢失数据也不多。collector有实现meta写入redis失败时转为写入本地磁盘,所以在redis实例down掉时,数据也不会丢失。


34 * 512 / 4096 = 4.25   非整数,4k没对齐,有几块没做好。

接着,处理4k对齐。先把所有redis实例进行bgwrite.  redis-cli -h redis02 -p 6379 bgrewriteaof, 停掉所有redis实例。

处理4k对齐, 重启机器。结果发现机器重启失败,阵列卡或线松了。

重启机器后,赶紧把所有aof文件都备份到其他机器上。结果有发现,有一块盘丢了,尝试mount回来。发现有很多block错误,要修复又怕丢数据。但现在盘有错误,只能先fsck修复,如果修复成功再从里面拷贝出来。要是觉得不保险,就先备份正常盘的数据,空出一块盘,把cache3的盘做个镜像,再做修复。最后aof文件终于弄出来了,启动redis实例,发现aof文件有问题,启动失败。使用redis-check-aof --fix修复了aof文件,再启动,成功。redis数据是被截断一部分丢失了。

数据恢复后,开始重新把redis机器上的ssd盘一个个重新格式化。


经验教训

因为redis的meta信息,是衔接collector采集,以及storm处理和hadoop camus入库。本次redis故障,大动干戈,对集群影响比较大。

还好collector有redis失败转存文件的功能,所以日志采集一直正常。

接下来的深圳新机房,存储meta的redis准备使用cluster,避免单点故障。保障可用性。

 

0条评论
0 / 1000
陈****旺
6文章数
0粉丝数
陈****旺
6 文章 | 0 粉丝
原创

记一次redis磁盘故障

2023-05-24 01:45:31
11
0

故障描述

redis机器的一个ssd盘出故障,只能读不能写。其他盘写入速度也很慢。导致redis实例的aof刷新一直失败,最终挂掉。


故障原因

ssd盘早期没有格式化好,4k对齐没做好


处理过程

该redis机器是用来存储collector采集到的日志的meta信息,比较关键,而且一台机器上开启了8个redis实例,所以不好处理。

一开始准备把redis的aof文件转移到一个新的盘上,并且把aof的dir动态更改到其他盘,结果发现redis实例挂掉了,就没有动态更换aof目录。这其中,redis的数据可能有所丢失,不过通过collector和redis日志发现,磁盘挂了后redis写入已经失败,估计有丢失数据也不多。collector有实现meta写入redis失败时转为写入本地磁盘,所以在redis实例down掉时,数据也不会丢失。


34 * 512 / 4096 = 4.25   非整数,4k没对齐,有几块没做好。

接着,处理4k对齐。先把所有redis实例进行bgwrite.  redis-cli -h redis02 -p 6379 bgrewriteaof, 停掉所有redis实例。

处理4k对齐, 重启机器。结果发现机器重启失败,阵列卡或线松了。

重启机器后,赶紧把所有aof文件都备份到其他机器上。结果有发现,有一块盘丢了,尝试mount回来。发现有很多block错误,要修复又怕丢数据。但现在盘有错误,只能先fsck修复,如果修复成功再从里面拷贝出来。要是觉得不保险,就先备份正常盘的数据,空出一块盘,把cache3的盘做个镜像,再做修复。最后aof文件终于弄出来了,启动redis实例,发现aof文件有问题,启动失败。使用redis-check-aof --fix修复了aof文件,再启动,成功。redis数据是被截断一部分丢失了。

数据恢复后,开始重新把redis机器上的ssd盘一个个重新格式化。


经验教训

因为redis的meta信息,是衔接collector采集,以及storm处理和hadoop camus入库。本次redis故障,大动干戈,对集群影响比较大。

还好collector有redis失败转存文件的功能,所以日志采集一直正常。

接下来的深圳新机房,存储meta的redis准备使用cluster,避免单点故障。保障可用性。

 

文章来自个人专栏
2071技术专栏
6 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0