2018年(273)
分类: 大数据
2018-06-21 15:32:37
数据库日志记录了用户对数据库的各种操作及数据库发生的各种事件。能帮助数据库管理员追踪、分析问题。MySQL提供了错误日志、二进制日志、查询日志、慢查询日志。
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值(long_query_time,单位:秒)的SQL语句。默认情况下,MySQL不启动慢查询日志。本文简单介绍如何开启慢查询日志,如何用mysqldumpslow分析慢查询。
在配置文件my.cnf(一般为/etc/my.cnf)中的[mysqld] section增加如下参数。
[mysqld] slow_query_log = 1 slow_query_log_file = /var/lib/mysql/slow-query.log # 若没有指定,默认名字为hostname_slow.log long_query_time = 1 log_queries_not_using_indexes = 1
其中,
slow_query_log = 1
slow_query_log_file
long_query_time = 1
log_queries_not_using_indexes = 1
# 重启 $ sudo service mysqld restart # 重启后进程如下 root 22373 0.0 0.0 66064 1424 pts/3 S 16:59 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --user=mysql
mysql 22721 0.3 0.5 890996 467040 pts/3 Sl 16:59 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/var/lib/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
重启MySQL后会看到/var/lib/mysql/slow-query.log文件。
通过如下命令可以检查上述参数配置情况。
mysql> show variables like 'slow_query%';
+---------------------+-------------------------------+ | Variable_name | Value |
+---------------------+-------------------------------+
| slow_query_log | ON | | slow_query_log_file | /var/lib/mysql/slow-query.log |
+---------------------+-------------------------------+
2 rows in set (0.00 sec)
mysql> show variables like 'long_query_time';
+-----------------+----------+
| Variable_name | Value | +-----------------+----------+ | long_query_time | 1.000000 |
+-----------------+----------+
1 row in set (0.00 sec)
制造慢查询并执行。如下。
mysql> select sleep(1);
+----------+
| sleep(1) |
+----------+
| 0 |
+----------+ 1 row in set (1.00 sec)
打开慢查询日志文件。可以看到上述慢查询的SQL语句被记录到日志中。