mysql 5.6开启慢查询

post by rocdk890 / 2014-4-1 10:07 Tuesday linux技术
  今天公司同事过来问我,他在测试服务器上把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服务.

ps:
log-slow-queries:代表MYSQL慢查询的日志存储目录,此目录文件一定要有写权限.
long_query_time:最长执行时间.(单位是秒)
log-queries-not-using-indexes:没有使用到索引的查询也将被记录在日志中.

当然也可以在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的文件大小是否有改变,这样才说明慢查询是开启成功了的,并且有记录到日志文件里.

怎么测试自己的查询是否会被记录下来呢?
运行语句:
select sleep(0.13);

ps:
http://my.oschina.net/moooofly/blog/160201
http://blog.itpub.net/29291882/viewspace-1064074/
http://bbs.chinaunix.net/thread-4099047-1-1.html
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-520.html

标签: mysql 慢查询 开启 mysql5.6 slow