记一次由硬盘坏道导致的mysql数据库故障

前些天,我在上课时,收到监控短信报警,赶忙用手机连上去看下,发现首页报错:

Table ‘forum_thread’ is marked as crashed and should be repaired

这是常见的数据表错误,通常是由于服务器意外断电等故障导致,修复起来往往比较简单,小点儿的表可以直接用phpmyadmin执行修复操作,大点的表可以连上服务器,执行repair table 表名来进行修复。本例中,我在执行命令后,发现依然报错,而出错信息变为了:

Table ‘forum_thread’ is marked as crashed and last (automatic) repair failed

也就是说,修复无效。这种情况很少遇到,于是,只能先把数据库停掉(执行repair时,不需停止数据库服务)。

service mysql stop cd /usr/local/[tableName]/ myisamchk -r common_forum_thread.MYI

依然报错。奇怪了,通常只要文件没有损坏,MYI都是可以修复了,因为MYI储存的是表所以,可以根据数据生成的。

无奈,最后执行了

myisamchk –safe-recover common)_forum_thread.MYI

该指令通常用于最后的修复操作,修复速度最慢。结果依然很失望,还是报错。这时候,我开始怀疑是服务器本身的问题了,最可疑的是文件本身,如果文件无法读写的话,那么很可能是硬盘或文件系统有问题了。于是,执行了一下dmesg查看一下开机信息,发现有一些I/O错误。

于是,硬盘坏道的可疑性更大了,随后cd到home目录下,执行

badblocks -s -v -o /root/badblocks.log /dev/sda

来检查磁盘坏道,执行到12%左右的时候,我去看了下文件,如图:

已经有很多坏扇区了,确定是硬盘问题了。时候反省一下,当怀疑有硬盘坏道时,即使是写入文件操作,也是危险的,因为写入可能导致坏道进一步扩大。于是,剩下的事情就是联系机房,换硬盘,对拷数据,恢复系统……把旧硬盘的数据cp过来,执行修复,检查网站,测试功能,重新上线。

总结:对于独服,要尤其注意硬盘坏道问题,本次故障,服务器是1T的硬盘,没有做RAID,也没有定期检查坏道,硬盘用了2年左右的时间,好在数据有备份。备份,备份,还是备份,无论是采取整站备份还是增量备份,一定要做到服务器定期备份,以免出现意外情况。本次损坏的仅仅是日志文件,对拷过来就可以修复,如果损坏的是数据文件,那损失就不可估量了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏帘卷西风的专栏

关于cocos2dx程序的BUG调试解决方案

      今天说一下手机游戏开发的调试问题吧。不得不说的是和PC平台游戏、软件开发相比,手机上开发游戏和软件要困难的多。原因是多方面的,比如说开发环境比较复杂...

972
来自专栏weixuqin 的专栏

基于 Django 的手机管理系统

1964
来自专栏Python数据科学

Python爬虫之模拟登录京东商城

首先感谢大家的大力支持,博主会持续更新精彩文章,分享更多技术干货。另外,最近在新建的QQ群中结识了一些朋友,气氛很好,大家互相分享技术内容,博主也从中收获了不少...

3932
来自专栏逸鹏说道

02.SQLServer性能优化之---牛逼的OSQL----大数据导入

汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 上一篇:01.SQLServer性能优化之---...

32812
来自专栏小车博客

windows 10 DD包制作

4166
来自专栏北京马哥教育

运维需要懂的那些安全技能

运维行业正在变革,推荐阅读:30万年薪Linux运维工程师成长魔法 以前的认知 以前刚接触IT行业,而我身为运维,我以为我所需要做的安全就是修改服务器密码为复...

6355
来自专栏性能与架构

使用 mytop 监控mysql性能状态

Linux 有个非常有用的 top 命令,可以查看操作系统的性能状态,mytop 命令类似 top 命令,界面结构也类似,只是 mytop 显示的是 mysql...

38614
来自专栏pangguoming

(十一) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图...

1722
来自专栏ml

C/C++ http协议加载sessionID

       很多时候,使用一个既定的API虽然可以去完成一些任务,但是还是不如自己写来的那么随性和自由. http协议,最常用的get,post两种方式传输数...

3196
来自专栏杨逸轩 ' sBlog

网站域名被劫持了应该怎么办

1.2K5

扫码关注云+社区

领取腾讯云代金券