如何处理MySQL InnoDB信息 “Database page corruption on disk or a failed file read of page”

 

适用于:

MySQL服务器版本4.0及以上

本文信息适用于所有平台。

 

症状

MySQL服务器由以下信息崩溃:

 

InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page

 

原因

为了保护数据,InnoDB使用校验和(与页储存在一起)。当InnoDB从磁盘读取时,它计算每个页的校验和,并与磁盘加载的校验和进行比较。如果值是不同的,可能真的发生了一些错误。InnoDB将关闭MySQL服务器,以防止进一步的逻辑或物理损坏。

 

解决方案

如何找出损坏发生的原因

没有通用的解决方案。最典型的是有一些硬件问题,例如:物理磁盘或内存故障,坏的驱动器/控制器,甚至操作系统内核的bug。下面是一些建议:

 

  • 在Linux平台上,有时会重置页缓存能解决这个问题:

echo 2 > /proc/sys/vm/drop_caches

  • 检查系统日志有没有可能的硬件故障。
  • 如果InnoDB每次在特定页崩溃,最典型的是物理磁盘发生故障:运行对于你的OS /硬件的详细磁盘诊断。
  • 如果崩溃是随机的且不在相同查询重复,可能是RAM故障:运行详细的RAM诊断。
  • 在MySQL关闭时,用innochecksum工具检查InnoDB文件是有帮助的。

 

如何从损坏中恢复

最重要的是执行详细的硬件诊断,以消除问题扩散的机会。如果操作系统I / O缓存是磁盘读损坏的原因,重置缓存或重新启动操作系统应有助于消除当前的问题,数据库可能会重新运作。

 

有时唯一的解决办法是在有效恢复模式下备份数据。Sometimes the only

 

参考

http://dev.mysql.com/doc/en/forcinginnodbrecovery.html

http://dev.mysql.com/doc/en/innochecksum.html

Comment

*

沪ICP备14014813号

沪公网安备 31010802001379号