> 数据库 > MySQL >

mysql 5.6开启慢查询

今天公司同事过来问我,他在测试服务器上把mysql的慢查询开启了,怎么没有日志生成,我当场就笑他说是不是没有配置对,他很肯定的给我说是正确的,去他位置上看了看,发现慢查询没有启动,但看了下my.cnf又有写配置,当时就感觉很奇怪,搜了下mysql版本,发现原来mysql版本是5.6.14的,找到了脚本就很好解决问题了.

下面是解决方法:
原来的my.cnf配置文件:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
slow-query-log-file=/var/log/mysql/slow.log
long_query_time=0.03
log-queries-not-using-indexes
character-set-server=utf8
collation-server=utf8_unicode_ci
init-connect='SET NAMES utf8'
max_connections=3000
.....
这里我就不整完了,只贴出关键的.

修改后的my.cnf配置文件:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
slow_query_log=on
slow-query-log-file=/var/log/mysql/slow.log
long_query_time=0.03
log-queries-not-using-indexes
character-set-server=utf8
collation-server=utf8_unicode_ci
init-connect='SET NAMES utf8'
max_connections=3000
.....

修改完配置文件后,记得保存重启mysql服务.

当然也可以在mysql里直接开启慢查询:
mysql>set global slow_query_log='ON';

查询慢查询是否开启:
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 "%query%";
+------------------------------+-------------------------+
| Variable_name                | Value                   |
+------------------------------+-------------------------+
| binlog_rows_query_log_events | OFF                     |
| ft_query_expansion_limit     | 20                      |
| have_query_cache             | YES                     |
| long_query_time              | 0.030000                |
| query_alloc_block_size       | 8192                    |
| query_cache_limit            | 1048576                 |
| query_cache_min_res_unit     | 4096                    |
| query_cache_size             | 1048576                 |
| query_cache_type             | OFF                     |
| query_cache_wlock_invalidate | OFF                     |
| query_prealloc_size          | 8192                    |
| slow_query_log               | ON                      |
| slow_query_log_file          | /var/log/mysql/slow.log |
+------------------------------+-------------------------+
13 rows in set (0.00 sec)

最后检查/var/log/mysql/slow.log的用户和组是否为mysql,权限是否可写,并且查看slow.log的文件大小是否有改变,这样才说明慢查询是开启成功了的,并且有记录到日志文件里.

ps:
http://my.oschina.net/moooofly/blog/160201
http://blog.itpub.net/29291882/viewspace-1064074/
http://bbs.chinaunix.net/thread-4099047-1-1.html (责任编辑:IT)