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存储引擎》