mysqld服务器使用日志文件找出mysqld中的错误原因
发布时间:2022-01-13 11:44    浏览:    编辑:admin

西安唯美数据恢复中心:注意,在带--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为什么死掉。

如果出现表崩溃,请生成测试案例

如果在一些更新命令之后,mysqld总是当掉,或者如果你遇到被破坏的表,你可以用下面的操作测试看这个缺陷是否是可重复产生的:

  • 卸掉MySQL守护进程(用mysqladmin shutdown)。

  • 给该表做备份(防止修复操作反而搞坏这种很不可能出现的情况)。

  • myisamchk -s database/*.MYI 检查所有的表,用myisamchk -r database/table.MYI修理有错误的表。

  • 对该表做第二次备份。

  • 如果需要更多的空间就从MySQL数据库目录删除(或移走)旧日志文件。

  • 带--log-bin启动Start mysqld
    当你已经遭遇一个被破坏的表时,请停止mysqld server 。

  • 还原备份。

  • 不带--log-bin重启动mysqld 服务器。 

  • 重新执行mysqlbinlog update-log-file | mysql命令。更新的日志用名字hostname-bin.#保存在MySQL数据库目录下。 


微信客服

在线QQ客服

服务热线

029-86478250

24小时热线

029-86478250