• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 使用服务器日志查找mysqld中的错误原因

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

    如果mysqld死亡或挂起,则应在启用常规查询日志的情况下启动mysqld。请参见“mysqldumpslow 汇总慢查询日志文件”。当mysqld再次死亡时,您可以检查日志文件的末尾是否有杀死mysqld的查询。

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

    您也可以EXPLAIN在所有SELECT需要很长时间的语句上尝试使用该命令,以确保mysqld正确使用了索引。请参见“ EXPLAIN语句”。

    您可以通过在启用慢查询日志的情况下启动mysqld来查找执行时间较长的查询。请参见“MySQL服务器慢查询日志”。

    如果您mysqld restarted在错误日志中找到文本(通常是一个名为的文件host_name.err),则可能已经找到了导致mysqld失败的查询。如果发生这种情况,则应使用myisamchk检查所有表(请参阅MySQL服务器管理),并在MySQL日志文件中测试查询以参见是否失败。如果找到这样的查询,请尝试首先升级到最新的MySQL版本。如果这样做没有帮助,请报告错误,

    如果您已使用系统变量集启动mysqld,则myisam_recover_optionsMySQL将自动检查并尝试修复MyISAM表是否标记为“未正确关闭”或“损坏”。如果发生这种情况,MySQL将在hostname.err文件中写入一个条目,如果需要修复该表'Warning: Checking table ...',则紧跟其后Warning: Repairing table。如果您遇到很多这样的错误,而mysqld之前并没有意外死亡,那么这是有问题的,需要进一步调查。请参见“服务器命令选项”。

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

    如果mysqld意外死亡,这不是一个好兆头,但是在这种情况下,您不应该调查Checking table...消息,而是尝试找出mysqld为何死亡。