首页 > 代码库 > MySQL日志文件

MySQL日志文件

1)错误日志(error log)

错误日志对MySQL的启动、运行、关闭过程进行了记录。

通过show variables like ‘log_error‘来定位该文件。

mysql> show variables like ‘log_error‘;
+---------------+---------------------------------+
| Variable_name | Value                           |
+---------------+---------------------------------+
| log_error     | /usr/local/mysql/data/rhel6.err |
+---------------+---------------------------------+
1 row in set (0.00 sec)


2)二进制日志(binlog)

二进制日记记录了对MySQL数据库执行更改的所有操作,但是不包括SELECT和SHOW这类操作。

通过配置参数log-bin [=name]可以启动二进制日志。

[root@rhel6 data]# cat /etc/my.cnf | grep log-bin
log-bin=mysql-bin


相关的参数:

max_binlog_size:指定了单个二进制日志文件文件的最大值,如果超过该值,则产生新的二进制日志文件,后缀名+1,并记录到.index文件。

binlog_cache_size:当使用事务的表存储引擎时,所有未提交的二进制日记会被记录到一个缓冲中去,等该事务提交时直接将缓冲中的二进制日记写入二进制文件,而缓冲的大小由binlog_cache_size决定,默认大小为32K。

sync_binlog:参数sync_binlog=[N],表示每写缓冲多少次就同步到磁盘。

binlog-do-db:要同步的数据库。

binlog-ignore-db:不要同步的数据库。

log-slave-update:如果slave需要将从master取得并执行的二进制日志写入自己的二进制日志文件中去,就要设置log-slave-update。

bin_format:binlog日志格式,有STATEMENT、ROW、MIXED三种格式。


3)慢查询日志(slow query log)

慢查询日志可帮助DBA定位可能存在问题的SQL语句,从而进行SQL层面的优化。可以通过设一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询日记中,默认为10秒。

mysql> show variables like ‘long_query_time‘;
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

检查是否开启慢查询日记:

mysql> show variables like ‘log_slow_queries‘;
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| log_slow_queries | ON    |
+------------------+-------+
1 row in set (0.00 sec)


查看慢查询日志:

[root@rhel6 data]# mysqldumpslow rhel6-slow.log


MySQL5.6.5版本开始新增了一个参数log_throttle_queries_not_using_indexes,用来标示每分钟允许记录到slow log的且未使用索引的SQL语句次数。


4)查询日志(log)查询日记记录了所有对MySQL数据库请求的信息,无论这些请求是否得到了正确的执行。默认文件名为:主机名.log

开启查询日志:

[root@rhel6 data]# cat /etc/my.cnf | grep log
log=imkh.log

查看查询日志:

[root@rhel6 data]# cat imkh.log
/usr/local/mysql/bin/mysqld, Version: 5.5.29-log (Source distribution). started with:
Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument
140506  0:14:01     1 Connect   imkh@localhost on
            1 Connect   Access denied for user ‘imkh‘@‘localhost‘ (using password: YES)


参考:《MySQL技术内幕:InnoDB存储引擎》