暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 由迪 2020-09-27
574

注意,在启用常规查询日志的情况下启动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死机的原因。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论