背景: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
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
评论列表