本文对MySQL常用日志进行整理,通过有效利用这些日志信息,在实际的使用时能够提高效率。
错误日志
错误日志记录了Mysql运行过程中的相关错误信息以及启动和关闭的详细信息。默认情况下设定是关闭的。错误信息输出到标准错误,开启的开关是:–log-error选项,设定方法如下所示:
设定方法:–log-error=错误日志文件FULL PATH
结合flush logs命令来生成新的日志文件,同时旧的日志信息会进行备份
更新日志
类似binlog的功能,在MySQL5后不再支持,此处不再介绍。
查询日志
查询日志用于记录所有的查询。默认的查询日志文件名称为:hostname.log. 开启的开关是:–log选项,设定方法如下所示:
设定方法:–log=查询日志文件FULL PATH
注意事项:记录所有的查询,量较大,开启后对性能会产生影响,一般只在确认或者跟踪时暂时打开。需要注意关闭。
慢查询日志
MySQL提供查询执行时间较长的日志信息,默认为关闭状态,默认的慢查询日志文件为hostname-slow.log,默认的目录为数据目录。开启的开关是:–log-slow-queries选项,设定方法如下所示:
设定方法:log-slow-queries=慢查询日志FULL PATH
另外可以结合慢查询日志分析工具:mysqldumpslow以确认可能存在的性能问题。实际上你仔细确认就会发现此工具无非就是一个perl脚本,对日志信息进行统计和展示而已。
慢日志使用示例:打开
mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.05 sec)
mysql> show variables like 'slow_query_log';
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| slow_query_log | ON |
+----------------+-------+
1 row in set (0.00 sec)
mysql> show variables like 'slow_query_log%';
+---------------------+--------------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------------+
| slow_query_log | ON |
| slow_query_log_file | /var/lib/mysql/0174af5bd765-slow.log |
+---------------------+--------------------------------------+
2 rows in set (0.00 sec)
mysql>
慢日志使用示例:设定阈值
mysql> set global long_query_time=0.1;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.01 sec)
mysql>
但是不用担心,只是在当前session的显示的问题,退出此mysql的控制台,然后重新进入,再次确认会发现实际已经设定了
mysql> show variables like 'long_query_time';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 0.100000 |
+-----------------+----------+
1 row in set (0.00 sec)
mysql>
慢日志使用示例:关闭
mysql> set global slow_query_log=0;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'slow_query_log%';
+---------------------+--------------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /var/lib/mysql/0174af5bd765-slow.log |
+---------------------+--------------------------------------+
2 rows in set (0.01 sec)
mysql>
log_queries_not_using_indexes
log_queries_not_using_indexes设定为ON表示没有使用索引进行查询的都会被记录下来。
mysql> show variables like 'log_queries_not_using_indexes';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF |
+-------------------------------+-------+
1 row in set (0.01 sec)
mysql>