您所在的位置: 主页 > 解决方案 > 个人数据恢复 >

使用日志文件找出mysqld中的错误原因

来源:www.hdd-120.com点击数:更新时间:2019-10-03

注意,在带--log选项启动 mysqld之前,你应该用myisamchk检查所有的表。

如果 mysqld 死了或挂起,你应该用--log启动 mysqld 。当mysqld 再次死掉时,你可以检查日志文件的最后,找出杀掉mysqld的查询。

如果你不带文件名使用 --log ,日志被保存在名为host_name.log的数据库目录里。在多数情况下,日志文件中的最后一个查询杀掉mysqld,但如果有可能,你应该重启mysqld并从mysq命令行工具执行找到的查询来验证一下。如果这个查询杀掉了mysqld,你也应该测试所有没有完成的复杂查询。

你也可以在所有占用长时间的SELECT声明上用命令EXPLAIN来确认 mysqld正适当地使用索引。
你可以带 --log-slow-queries启动mysqld来找出占用长时间来执行的查询。

如果你在错误日志文件(通常名为hostname.err)中发现 mysqld restarted 字样,你大致已经找到导致mysqld的查询。如果发生这种情况,你应该用myisamchk检查所有表,并在MySQL日志文件中测试这些查询看是否有不执行的。如果找到这样一个查询,试着升级到最新的MySQL版本。如果这样不能帮助你,你不能在mysql邮件存档中发现任何相关内容,你应该把缺陷报告给MySQL邮件列表。

如果你已经用myisam-recover启动了mysqld,MySQL自动检查并试着修复MyISAM 表,看是否它们被标志为“未正常关闭”或“崩溃”。如果发生这种情况,MySQL在文件hostname.err 写一个条目'Warning: Checking table ...',后面跟着警告:如果表需要修复,请修复它。如果你遇上大量的这些错误而mysqld没有意外死掉,那就是有问题了,需要进一步调查。

如果mysqld意外死掉,这可不是一个好兆头,但在这种情况下不用研究Checking table...信息,而是要找出mysqld为什么死掉。

分享到:QQ空间新浪微博腾讯微博人人网微信