如果遇到表损坏,请进行测试
以下过程适用于MyISAM
表。有关遇到InnoDB
表损坏时要采取的步骤的信息,
如果遇到损坏的MyISAM
表或在某些更新语句后mysqld总是失败,则可以通过执行以下操作来测试问题是否可重现:
- 使用mysqladmin shutdown停止MySQL守护进程。
- 对表进行备份,以防万一修复会造成不良后果。
- 使用myisamchk -s database /*。MYI检查所有表。使用myisamchk -r数据库/
table
.MYI修复任何损坏的表。 - 对表进行第二次备份。
- 如果需要更多空间,请从MySQL数据目录中删除(或移走)所有旧日志文件。
- 在启用二进制日志的情况下启动mysqld。如果要查找使mysqld崩溃的语句,则还应在启用常规查询日志的情况下启动服务器。请参见“mysqldumpslow 汇总慢查询日志文件”和“二进制日志”。
- 表崩溃后,停止mysqld服务器。
- 恢复备份。
- 在不启用二进制日志的情况下重新启动mysqld服务器。
- 使用mysqlbinlog二进制日志文件重新执行语句MySQL的。二进制日志的名称保存在MySQL数据库目录中。
hostname-bin.NNNNNN
- 如果表再次损坏,或者您可以使用上面的命令使mysqld死亡,则您发现了可重现的错误。使用“如何报告错误或问题”中给出的说明,将表和二进制日志通过FTP传输到我们的错误数据库。如果您是支持客户,则可以使用MySQL客户支持中心(https://www.mysql.com/support/)向MySQL团队发出有关该问题的警报,并尽快对其进行修复。