是什么导致表需要维修?

时间:2020-03-06 14:23:28  来源:igfitidea点击:

我每隔一段时间就会收到一条错误消息,说我的一张桌子"被标记为已损坏,应该修理"。然后,我做一个维修台并修理它。是什么导致它们被标记为崩溃的,我该如何预防?我在MySQL 5.0.45中使用MyISAM表。

解决方案

可能有很多事情,但是MySQL Performance Blog提到内存不足,操作系统或者MySQL错误可能导致隐藏损坏。此外,该文章和另一篇文章还提到了崩溃恢复时要记住的几件事。

通常,它发生在数据库未正确关闭(例如系统崩溃或者硬件问题)的情况下。

表损坏的原因可能有很多,在手册中将对此进行详细讨论。

为了与之抗衡,以下几项效果最佳:

  • 确保我们始终正确关闭MySQL
  • 考虑使用--myisam-recover选项在关闭不正确的情况下自动检查/修复表
  • 确保我们使用的是最新版本,因为通常会尽快修复已知的损坏错误
  • 通过测试仔细检查硬件,看是否引起问题。诸如sysbench和memtest86之类的工具通常可以帮助验证事情是否按预期进行。
  • 确保没有任何东西在外部接触数据目录,例如病毒检查程序,备份程序等。

我曾经像你一样从mysql获取错误。

我以这种方式解决了我的问题

  • 将所有myisam表转换为InnoDB(我们可以在stackoverflow.com和搜索引擎中搜索" myisam vs InnoDB",以查明原因)
  • 为了从MySQL获得最佳性能,请使用第三方程序MONyog(MySQL Monitor和Advisor)并检查性能提示。

这两个步骤救了我。希望这些对我们有所帮助。