[实践OK]mysql 5.6 打开慢查询,Mysql新版本的慢查询配置和旧的版本不太一样。

jackxiang 2014-6-13 13:22 | |
背景:Mysql新版本的慢查询配置和旧的版本不太一样,为此,特转下这这篇文章,以备案。近来发现我们用程序写啥慢sql还不如包自己带呢,
MySQL分支 Percona 5.6.15 发布: http://www.open-open.com/news/view/18ed41c ,这自己带着杀sql的功能: Percona5.6自身已支持杀死慢SQL, http://hcymysql.blog.51cto.com/5223301/1621218

零、关闭mysql:

一、Mysql启动参数 -u root:


二、配置my.cnf如下:


mysql版本:
mysql> select version();
+------------+
| version()  |
+------------+
| 5.6.13-log |
+------------+
1 row in set (0.00 sec)

[root@mysql_multi ~]# vi /etc/my.cnf
【mysqld3307】
long_query_time=1
#slow_query_log
slow_query_log=1
#slow_query_log_file=/data/mysql/mysqldata3307/log/slow-query.log
#以前版本的参数格式跟5.6的不一致
slow_query_log_file=/data/mysql/mysqldata3307/log/slow-query.log
#将所有没有使用带索引的查询语句全部写到慢查询日志中
log_queries_not_using_indexes=1

对 3307 端口的mysql:

[root@mysql_multi ~]# mysqld_multi start 3307
[root@mysql_multi ~]# netstat -nlp|grep mysql
tcp        0      0 :::3306                     :::*                        LISTEN      20211/mysqld        
tcp        0      0 :::3307                     :::*                        LISTEN      18693/mysqld        
unix  2      [ ACC ]     STREAM     LISTENING     42309  20211/mysqld        /data/mysql/mysqldata3306/sock/mysql.sock
unix  2      [ ACC ]     STREAM     LISTENING     69806  18693/mysqld        /data/mysql/mysqldata3307/sock/mysql.sock

root@localhost : mysql 01:00:16> show variables like '%slow%';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    2
Current database: mysql

+---------------------------+----------------------------------------------+
| Variable_name             | Value                                        |
+---------------------------+----------------------------------------------+
| log_slow_admin_statements | OFF                                          |
| log_slow_slave_statements | OFF                                          |
| slow_launch_time          | 2                                            |
| slow_query_log            | ON                                           |
| slow_query_log_file       | /data/mysql/mysqldata3307/log/slow-query.log |
+---------------------------+----------------------------------------------+
5 rows in set (0.00 sec)


root@localhost : mysql 01:03:44> show variables like '%index%';
+----------------------------------------+-------+
| Variable_name                          | Value |
+----------------------------------------+-------+
| eq_range_index_dive_limit              | 10    |
| innodb_adaptive_hash_index             | ON    |
| innodb_cmp_per_index_enabled           | OFF   |
| log_bin_index                          |       |
| log_queries_not_using_indexes          | ON    |
| log_throttle_queries_not_using_indexes | 0     |
| relay_log_index                        |       |
+----------------------------------------+-------+
7 rows in set (0.00 sec)

然后运行一个需要长时间才能执行完毕的sql,
select sleep(2);
使用mysqldumpslow 查看日志:
/data/mysql/mysqldata3307/log/slow-query.log (直接使用cat 进行查看也可以)

转自:http://blog.itpub.net/29291882/viewspace-1064074

实践如下:
一、
vi /usr/local/mysql/conf/my.cnf

slow_query_log=1
long_query_time = 2
slow_query_log_file=/data/db/mysql/localhost-slow.log
#将所有没有使用带索引的查询语句全部写到慢查询日志中
log_queries_not_using_indexes=1
#如果开启了log_queries_not_using_indexes选项,slow query日志会充满过多的垃圾日志记录,这些快且高效的全表扫描查询(表小)会冲掉真正有用的slow queries记录。比如select * from category这样的查询也会被记录下来。

二、
mysql> show variables like '%slow%';
+---------------------------+-----------------------------------+
| Variable_name             | Value                             |
+---------------------------+-----------------------------------+
| log_slow_admin_statements | OFF                               |
| log_slow_slave_statements | OFF                               |
| slow_launch_time          | 2                                 |
| slow_query_log            | ON                                |
| slow_query_log_file       | /data/db/mysql/localhost-slow.log |
+---------------------------+-----------------------------------+

三、
du -sh /data/db/mysql/localhost-slow.log
803M    /data/db/mysql/localhost-slow.log

四、
Mysql 测试配置文件是否正确 my.cnf,那个nginx 有-t,mysql呢?
一)这个没必要重启,直接 set @@global.slow_query_log=1;
二)起动一个新端口的副本测试,有道理。

mysql>  show variables like '%slow%';
+---------------------------+--------------------------------------------+
| Variable_name             | Value                                      |
+---------------------------+--------------------------------------------+
| log_slow_admin_statements | OFF                                        |
| log_slow_slave_statements | OFF                                        |
| slow_launch_time          | 2                                          |
| slow_query_log            | ON                                         |
| slow_query_log_file       | /data/db/mysql/localhost-xiyou-slowsql.log |
+---------------------------+--------------------------------------------
__________________________________________
mysql5.6和5.5中打开slow_query_log的方式有所改变:

mysql5.6.10关于慢查询的设置slow-query-log
前两天,刚把开发用的环境升级为2008R2,,所以想试试5.6.10的64位的数据库,是在mysql的官方下载的win32x64版本,一共有200多M。发现里面只有一个默认的my.ini文件,想进行优化试试,结果发现老是启动不了。后来发现,主要是这个关于慢查询的设置变了,之前是:
slow_query_log
long_query_time = 5
log-slow-queries=slow.log
现在必须要这种设置才行
slow_query_log=1
slow_query_log_file=slow.log
看来从5.6.* 可能已经全面取消了
log_slow_queries=slow.log这种写法了
来自:http://www.2cto.com/database/201304/203100.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/7267/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2015-3-24 16:26
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]