记一次由硬盘坏道导致的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 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

MySQL 5.5复制升级到5.7的一点简单尝试

最近有个需求是升级MySQL 5.5到MySQL 5.7版本,为此我们想了一些方案,比如MySQL级联复制升级,这么考虑主要是基于版本的差异性,尽可能保...

5257
来自专栏极客编程

用Node操作Firebird

  Firebird是一个跨平台的关系数据库系统,目前能够运行在Windows、linux和各种Unix操作系统上,提供了大部分SQL-99标准的功能。它既能作...

632
来自专栏性能与架构

使用 mytop 监控mysql性能状态

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

35414
来自专栏存储

Xen server虚拟化中虚拟机磁盘文件丢失的处理办法

因服务器突然断电原因导致Xen Server服务器中一台VPS(即Xen Server虚拟机)不可用,虚拟磁盘文件丢失,通过电话联系北亚数据来进行恢复。硬件环...

1967
来自专栏北京马哥教育

LINUX上MYSQL优化三板斧

云豆贴心提醒,本文阅读时间7分钟 现在MySQL运行的大部分环境都是在Linux上的,如何在Linux操作系统上根据MySQL进行优化,我们这里给出一些通用简...

2877
来自专栏ml

C/C++ http协议加载sessionID

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

3126
来自专栏Python数据科学

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

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

2562
来自专栏醉程序

配置nginx + php7 + mongodb的centos服务器环境

1722
来自专栏乐百川的学习频道

用本机电脑搭建网站(域名、DNS解析)

最近又准备瞎捣鼓一下个人网站。本来呢,如果是自己玩玩的话,用花生壳或者NAT123这样的动态DNS解析就可以了。但是最近花生壳这个吊玩意不知道怎么又没办法解析了...

9009
来自专栏杨建荣的学习笔记

MySQL审计插件使用和对比

数据库审计是数据库安全中很重要的一个环节,说到审计,有些上市公司内部还会根据塞班斯法案,进行404审计等等。 而最基本的审计还是需要的,有些同学可能...

5969

扫码关注云+社区