我的作品中ARCHIVE
表已损坏。
我试过
REPAIR TABLE TBL_NAME;
无法修复表格。只有MyISAM表支持修复吗?
我丢弃了桌子,重新创建了它,然后从我已经拥有的转储中恢复了它。
Q1:处理这种情况可能是更好的选择?
Q2:为什么数据库/表经常被破坏?
问题3:我们可以采取哪些措施来防止表格损坏?
答案 0 :(得分:3)
Q1:处理这种情况可能是更好的选择吗?
鉴于这种情况,我认为你所做的是最好的解决方案。有一个名为ARCHIVE
的{{1}}引擎恢复工具,如果您没有备份,可能可以帮助您恢复行
你有备份的事实很好,并把你救了。如果您希望能够执行完全恢复,则可能值得启用二进制日志记录或添加复制的从属服务器。
Q2:为什么数据库/表经常被破坏?
在正常操作中他们不应该。我会查看你的MySQL错误日志,看看是否有任何错误消息对应于表崩溃的时间。服务器上的磁盘或其他问题可能会使表更可能损坏表。也许您在archive_reader
引擎中发现了一个错误?
问题3:我们可以采取哪些措施来防止表格损坏?
正如Q2中提到的那样,可以很好地查找错误消息。如果您发现可以预测复制崩溃表,请确保提交MySQL错误报告。
答案 1 :(得分:-1)
FOR MyISAM表: -
1)使用myisamchk识别所有损坏的表
2)使用myisamchk -r
修复损坏的表如果您的应用程序和其他表仍然使用这些表。要避免此错误消息,请在执行修复之前关闭mysqld,如果您能够在一段时间内关闭数据库。如果没有,请使用FLUSH TABLES强制mysqld刷新仍在内存中的任何表修改
您还可以对整个MySQL数据库一起执行检查和修复 示例: myisamchk --silent --force --fast --update-state ..... *。MYI