注意,在启用常规查询日志的情况下启动mysqld之前,应使用myisamchk检查所有表 。请参阅 第5章,MySQL服务器管理。
如果mysqld死亡或挂起,则应在启用常规查询日志的情况下启动 mysqld。请参见第5.4.3节“常规查询日志”。当mysqld 再次死亡时,您可以检查日志文件的末尾是否有杀死mysqld的查询。
如果使用默认的常规查询日志文件,则该日志将存储在数据库目录中,如下所示: host_name.log在大多数情况下,它是杀死mysqld的日志文件中的最后一个查询 ,但如果可能,应通过重新启动mysqld并执行找到的查询来进行验证。从mysql命令行工具。如果可行,您还应该测试所有未完成的复杂查询。
您也可以EXPLAIN在所有SELECT需要很长时间的语句上尝试使用该命令 , 以确保mysqld正确使用了索引。请参见第13.8.2节“ EXPLAIN语句”。
您可以通过在启用慢查询日志的情况下启动mysqld来查找执行时间较长的查询。请参见第5.4.5节“慢查询日志”。
如果您mysqld restarted在错误日志中找到文本(通常是名为的文件 host_name.err),则可能已经找到导致mysqld失败的查询 。如果发生这种情况,则应使用myisamchk检查所有表(请参见 第5章,MySQL服务器管理),并在MySQL日志文件中测试查询以查看是否失败。如果发现这样的查询,请尝试首先升级到最新的MySQL版本。如果这样做没有帮助,请报告错误,请参见 第1.6节“如何报告错误或问题”。
如果您已启动mysqld并myisam_recover_options设置了 系统变量,则MySQL将自动检查并尝试修复 MyISAM被标记为“未正确关闭”或“损坏”的表。如果发生这种情况,MySQL将在hostname.err文件中 写入一个条目,如果需要修复该表’Warning: Checking table …’,则紧跟其后Warning: Repairing table。如果您遇到很多这样的错误,而mysqld之前并没有意外死亡,则可能是错误的,需要进一步调查。请参见第5.1.7节“服务器命令选项”。
服务器检测到MyISAM表损坏时,会将其他信息写入错误日志,例如源文件的名称和行号以及访问该表的线程列表。范例:Got an error from thread_id=1, mi_dynrec.c:368。这是包含在错误报告中的有用信息。
如果mysqld意外死机并不是一个好兆头,但是在这种情况下,您不应该调查 Checking table…消息,而是尝试找出mysqld死机的原因。




