您的位置:首页 > 数据库 > MySQL

mysql 5.6 打开慢查询,Mysql新版本的慢查询配置和旧的版本不太一样。(转自向东兄弟的博文)

2015-02-07 23:33 351 查看
背景:Mysql新版本的慢查询配置和旧的版本不太一样,为此,特转下这这篇文章,以备案。

零、关闭mysql:
/usr/local/mysql/bin/mysqladmin -u root shutdown
/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/conf/my.cnf -uroot &   
/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/conf/my.cnf --basedir=/usr/local/mysql --datadir=/data/db/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/db/mysql/localhost.localdomain.err --open-files-limit=65535 --pid-file=/data/db/mysql/localhost.localdomain.pid --socket=/tmp/mysqld.sock --port=3306   
/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/conf/my.cnf -uroot &
/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/conf/my.cnf --basedir=/usr/local/mysql --datadir=/data/db/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/db/mysql/localhost.localdomain.err --open-files-limit=65535 --pid-file=/data/db/mysql/localhost.localdomain.pid --socket=/tmp/mysqld.sock --port=3306


二、配置my.cnf如下:
long_query_time=2
slow_query_log=1
slow_query_log_file=/data/db/mysql/localhost-xiyou-slowsql.lo
long_query_time=2
slow_query_log=1
slow_query_log_file=/data/db/mysql/localhost-xiyou-slowsql.lo

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这种写法了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: