MySQL基础:常用的日志

MySQL基础:常用的日志
本文对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>