Documentation Home
MySQL 8.0 参考手册  / 第 5 章 MySQL 服务器管理  / 5.9 调试 MySQL  / 5.9.1 调试 MySQL 服务器  /  5.8.1.7 遇到表损坏时制作测试用例

5.8.1.7 遇到表损坏时制作测试用例

以下过程适用于 MyISAM表格。有关遇到InnoDB 表损坏时应采取的步骤的信息,请参阅第 1.6 节,“如何报告错误或问题”

如果您遇到损坏的MyISAM 表或者mysqld在某些更新语句后总是失败,您可以通过执行以下操作来测试问题是否可重现:

  1. 使用mysqladmin shutdown 停止 MySQL 守护进程。

  2. 对表进行备份,以防止修复造成不良后果的可能性很小。

  3. 使用myisamchk -s database/*.MYI 检查所有表。使用myisamchk -r database/ table.MYI修复任何损坏的表 。

  4. 对表进行第二次备份。

  5. 如果需要更多空间,请从 MySQL 数据目录中删除(或移走)所有旧日志文件。

  6. 在启用二进制日志的情况下启动mysqld。如果你想找到一个导致 mysqld崩溃的语句,你应该在启动服务器的同时启用通用查询日志。请参阅 第 5.4.3 节,“一般查询日志”第 5.4.4 节,“二进制日志”

  7. 当你得到一个崩溃的表时,停止 mysqld服务器。

  8. 恢复备份。

  9. 在不启用二进制日志的 情况下 重新启动mysqld服务器 。

  10. 使用mysqlbinlog binary-log-file | 重新执行语句 MySQL。二进制日志保存在 MySQL 数据库目录中,名称为 . hostname-bin.NNNNNN

  11. 如果表再次损坏,或者你可以用上面的命令让 mysqld死掉,你就发现了一个可重现的错误。使用第 1.6 节“如何报告错误或问题”中给出的说明将表和二进制日志通过 FTP 传输到我们的错误数据库 。如果您是支持客户,可以使用 MySQL 客户支持中心 ( https://www.mysql.com/support/ ) 向 MySQL 团队提醒该问题并尽快修复。