Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Using Server Logs to Find Causes of Errors in mysqld

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

注意,在启用通用查询日志之前,您应该使用 myisamchk 检查所有表格。见 第 7 章,MySQL 服务器管理

如果 mysqld 死亡或挂起,您应该启用通用查询日志,然后重新启动 mysqld。见 第 7.4.3 节,“通用查询日志”。当 mysqld 再次死亡时,您可以检查日志文件的结尾,以找到杀死 mysqld 的查询。

如果您使用默认的通用查询日志文件,日志将存储在数据库目录中,名为 主机名.log 在大多数情况下,日志文件中的最后一个查询是杀死 mysqld 的,但如果可能,您应该通过重新启动 mysqld 并从 mysql 命令行工具中执行找到的查询来验证。

您也可以尝试在所有耗时较长的 SELECT 语句上使用 EXPLAIN,以确保 mysqld 正确地使用索引。见 第 15.8.2 节,“EXPLAIN 语句”

您可以通过启用慢查询日志来找到执行时间较长的查询。见 第 7.4.5 节,“慢查询日志”

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

如果您已经启用了 mysqldmyisam_recover_options 系统变量,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 死亡。