文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  使用服务器日志查找 mysqld 中错误的原因

7.9.1.6 使用服务器日志查找 mysqld 中错误的原因

请注意,在启用常规查询日志的情况下启动 mysqld 之前,您应该使用 myisamchk 检查所有表。请参阅 第 7 章,MySQL 服务器管理

如果 mysqld 崩溃或挂起,您应该在启用常规查询日志的情况下启动 mysqld。请参阅 第 7.4.3 节,“常规查询日志”。当 mysqld 再次崩溃时,您可以检查日志文件末尾的查询,以查找导致 mysqld 崩溃的查询。

如果您使用默认的常规查询日志文件,则日志将存储在数据库目录中,名为 主机名.log。在大多数情况下,日志文件中的最后一个查询是导致 mysqld 崩溃的查询,但如果可能,您应该通过重新启动 mysqld 并从 mysql 命令行工具执行找到的查询来验证这一点。如果这有效,您还应该测试所有未完成的复杂查询。

您还可以在所有需要很长时间才能执行的 SELECT 语句上尝试 EXPLAIN 命令,以确保 mysqld 正在正确使用索引。请参阅 第 15.8.2 节,“EXPLAIN 语句”

您可以通过在启用慢查询日志的情况下启动 mysqld 来查找执行时间很长的查询。请参阅 第 7.4.5 节,“慢查询日志”

如果您在错误日志(通常是名为 主机名.err 的文件)中找到文本 mysqld restarted,则您可能找到了导致 mysqld 失败的查询。如果发生这种情况,您应该使用 myisamchk 检查所有表(请参阅 第 7 章,MySQL 服务器管理),并测试 MySQL 日志文件中的查询以查看是否有查询失败。如果找到这样的查询,请先尝试升级到最新的 MySQL 版本。如果这没有帮助,请报告错误,请参阅 第 1.6 节,“如何报告错误或问题”

如果您在设置了 myisam_recover_options 系统变量的情况下启动了 mysqld,则 MySQL 会自动检查并尝试修复标记为“未正确关闭”或“崩溃”的 MyISAM 表。如果发生这种情况,MySQL 会在 hostname.err 文件中写入一个条目 'Warning: Checking table ...',如果表需要修复,则后面跟着 Warning: Repairing table。如果您收到很多此类错误,而 mysqld 并没有意外崩溃,则说明出现了问题,需要进一步调查。请参阅 第 7.1.7 节,“服务器命令选项”

当服务器检测到 MyISAM 表损坏时,它会将其他信息写入错误日志,例如源文件的名称和行号,以及访问该表的线程列表。例如:Got an error from thread_id=1, mi_dynrec.c:368。这些信息在错误报告中很有用。

如果 mysqld 意外死亡,这不是一个好兆头,但在这种情况下,您不应该调查 正在检查表... 消息,而是应该尝试找出 mysqld 死亡的原因。