Mysql 存档表已损坏

Mysql 存档表已损坏,mysql,Mysql,在我的生产过程中,存档表已损坏 我试过了 REPAIR TABLE TBL_NAME; 它无法修理桌子。只有MyISAM表支持修复吗 我放下了桌子,重新创建了它,然后从我已经拥有的垃圾堆中恢复了它 问题1:处理这种情况的更好选择是什么 问题2:为什么数据库/表经常损坏 问题3:我们可以做什么来防止表损坏?对于MyISAM表:- 1) 使用myisamchk识别所有损坏的表 2) 使用myisamchk-r修复损坏的表 如果您的应用程序和其他表仍在使用这些表。为了避免此错误消息,请在执行修复之前

在我的生产过程中,
存档
表已损坏

我试过了

REPAIR TABLE TBL_NAME;
它无法修理桌子。只有MyISAM表支持修复吗

我放下了桌子,重新创建了它,然后从我已经拥有的垃圾堆中恢复了它

问题1:处理这种情况的更好选择是什么
问题2:为什么数据库/表经常损坏
问题3:我们可以做什么来防止表损坏?

对于MyISAM表:-

1) 使用myisamchk识别所有损坏的表

2) 使用myisamchk-r修复损坏的表

如果您的应用程序和其他表仍在使用这些表。为了避免此错误消息,请在执行修复之前关闭mysqld,前提是您可以暂时关闭数据库。如果不是,则使用FLUSH TABLES强制mysqld刷新仍在内存中的任何表修改

您还可以对整个MySQL数据库一起执行检查和修复 例子:
myisamchk--静默--强制--快速--更新状态…*。MYI

Q1:有什么更好的方法来处理这种情况?

在这种情况下,我认为你所做的是最好的解决办法。有一个名为
ARCHIVE\u reader
ARCHIVE
引擎恢复工具,如果您没有备份,它可能可以帮助您恢复行

事实上,你有备份是好的,把你保存在这里。如果您希望能够执行完全恢复,那么启用二进制日志记录或添加复制的从属服务器可能是值得的

Q2:为什么数据库/表经常损坏?

在正常操作中,它们不应该是。我会查看您的MySQL错误日志,看看是否有任何与表崩溃时间对应的错误消息。服务器上的磁盘或其他问题可能使其更有可能损坏表。也许您在
存档
引擎中发现了一个bug

Q3:我们可以做什么来防止表损坏?


如第2季度所述,请仔细查看错误消息。如果您发现可以预测复制表崩溃,请务必提交一份MySQL错误报告。

是的,只有MyISAM可以修复表。这只回答了我问题的一小部分:-)是的,这就是为什么我没有给出答案的原因:-)让我们等待答案..这是一个存档表,不是MyISAM表,所以这不是真正有用的您正在使用的Mysql版本是什么?这不是真正有用的。。我已经清楚地说过,它是归档引擎。。MySQL版本是5.5..Cool奇妙的答案:-)。。我的一个朋友是MySQL管理员,他说,根据他的经验,大多数时候破坏的表是归档引擎;您是否试用过存档阅读器工具?据我所知,它实际上没有修复功能。我没有使用过它。从我读到的信息中,我了解到它能够读取行,然后您必须以某种方式加载到表中。