问题 是什么原因导致需要修复表格?


每隔一段时间我就会收到一个错误,说我的一张桌子“被标记为崩溃并且应该被修复”。然后我做一个REPAIR TABLE并修复它。是什么导致他们被标记为崩溃,我该如何防止它?我正在使用MySQL 5.0.45的MyISAM表。


7079
2017-09-18 20:56


起源



答案:


表格被破坏可能有几个原因,详细讨论了 手册

为了对抗它,以下事情最有效:

  1. 确保始终正确关闭MySQL
  2. 考虑使用--myisam-recover选项在未正确关闭的情况下自动检查/修复表
  3. 确保您使用的是最新版本,因为已知的损坏错误通常是尽快修复的
  4. 通过测试仔细检查您的硬件,看它是否导致问题。像工具一样 sysbench的 和 的Memtest86 通常可以帮助验证事情是否正常运作。
  5. 确保没有任何东西在外部触及数据目录,例如病毒检查程序,备份程序等...

6
2017-09-18 21:18



我之前遵循了这些步骤,但总是会损坏表和数据丢失。然后我决定在下面作为我的答案处理,并且即使是有大量产品信息的大表,我也没有错误2年。我向大家推荐了我的答案。按照以下步骤在晚上睡个好觉 - 没有噩梦:) - rasputin


答案:


表格被破坏可能有几个原因,详细讨论了 手册

为了对抗它,以下事情最有效:

  1. 确保始终正确关闭MySQL
  2. 考虑使用--myisam-recover选项在未正确关闭的情况下自动检查/修复表
  3. 确保您使用的是最新版本,因为已知的损坏错误通常是尽快修复的
  4. 通过测试仔细检查您的硬件,看它是否导致问题。像工具一样 sysbench的 和 的Memtest86 通常可以帮助验证事情是否正常运作。
  5. 确保没有任何东西在外部触及数据目录,例如病毒检查程序,备份程序等...

6
2017-09-18 21:18



我之前遵循了这些步骤,但总是会损坏表和数据丢失。然后我决定在下面作为我的答案处理,并且即使是有大量产品信息的大表,我也没有错误2年。我向大家推荐了我的答案。按照以下步骤在晚上睡个好觉 - 没有噩梦:) - rasputin


通常,当数据库没有正常关闭时,例如系统崩溃或硬件问题,就会发生这种情况。


3
2017-09-18 21:05





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

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

  1. 将所有myisam表转换为InnoDB(您可以在stackoverflow.com和搜索引擎中搜索“myisam vs InnoDB”以查找原因)
  2. 要从MySQL获得最佳性能,请使用第三方程序MONyog (MySQL监视器和顾问)并检查性能提示

这两个步骤救了我。我希望这些也能帮助你。


3
2017-11-03 15:18





它可能是很多东西,但是 MySQL性能博客 提到可能导致隐藏损坏的内存不足,操作系统或MySQL错误。还有,那和 另一篇文章 提到崩溃恢复时要记住的几件事情。


0
2017-09-18 21:05