MySQL日志详解

MySQL有几个不同的日志文件

错误日志 记录启动、运行或停止mysqld时出现的问题。
查询日志 记录建立的客户端连接和执行的语句
二进制日志 记录所有更改数据的语句。还用于复制。
慢日志 记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。

默认情况下,所有日志创建于mysqld数据目录中。

错误日志

错误日志文件包含了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。

如果mysqld无法启动或者莫名其妙地死掉,mysqld在错误日志中写入相关消息。如果mysqld注意到需要修复一个表,也会在错误日志里面写入消息。

可以用–log-error[=file_name]选项来指定mysqld保存错误日志文件的位置。如果没有给定file_name值,mysqld使用错误日志名host_name.err 并在数据目录中写入日志文件。


查询日志

用–log[=file_name]或-l [file_name]选项启动它。如果没有给定file_name的值, 默认名是host_name.log。所有进行过的连接和查询语句被记录到日志文件。

如果你想知道程序对mysql提交了什么样子的查询,以及最近有什么样子的连接,就可以开启这个日志进行查询,这个日志的是普通txt文本,可以直接打开查看。

查询日志还包含所有语句,而二进制日志不包含只查询数据的语句。

在Windows中,服务器打开日志文件期间你不能重新命名日志文件。你必须先停止服务器然后重新命名日志文件。然后,重启服务器来创建新的日志文件。

二进制日志

二进制日志记录了所有的对mysql数据进行修改的记录,注意没有修改作业的查询语句不会被记录在内,要获得查询语句要用上面的查询日志。

启用二进制日志则性能大约慢1%。但是,二进制日志的好处,远远超过了这个性能损失,它可以用于数据恢复和数据复制。

用–log-bin[=file_name]选项启动,如果未给出file_name值, 默认名为-bin后面所跟的主机名。如果给出了文件名,但没有包含路径,则文件被写入数据目录。建议指定一个文件名。

如果你在日志名中提供了扩展名(例如,–log-bin=file_name.extension),则扩展名被悄悄除掉并忽略。

mysqld在每个二进制日志名后面添加一个数字扩展名。每次你启动服务器或刷新日志时该数字则增加。如果当前的日志大小达到max_binlog_size,还会自动创建新的二进制日志

可以用RESET MASTER语句删除所有二进制日志文件,或用PURGE MASTER LOGS只删除部分二进制文件

–binlog-do-db=db_name 只记录这个数据库的二进制日志

–binlog-ignore-db=db_name 除了这个数据外其他的数据库都记录二进制日志

可以用mysqlbinlog实用工具检查二进制日志文件

慢速查询日志

用–log-slow-queries[=file_name]选项启动,用long_query_time来定义超时的时间。

如果没有给出file_name值, 默认为主机名,后缀为-slow.log。如果给出了文件名,但不是绝对路径名,文件则写入数据目录。

在MySQL 5.1的慢查询日志中,不使用索引的慢查询同使用索引的查询一样记录。要想防止不使用索引的慢查询记入慢查询日志,使用–log-short-format选项。

可以使用mysqldumpslow命令来对慢查询的日志进行归类总结

Tags:

发表回复