Jquery中文网 www.jquerycn.cn
Jquery中文网 >  数据库  >  mysql  >  正文 MySQL 慢查询文件清空教程

MySQL 慢查询文件清空教程

发布时间:2017-12-12   编辑:www.jquerycn.cn
jquery中文网为您提供MySQL 慢查询文件清空教程等资源,欢迎您收藏本站,我们将为您提供最新的MySQL 慢查询文件清空教程资源
本教程我们主要讲的是当慢查询文件很大的时候怎样在线生成一个新的慢查询文件,后面深入介绍了正确安全清空在线慢查询日志slow log的流程。

配置慢查询

默认的my.cnf文件在/etc/目录下

vim /etc/my.cnf

#slow_query

slow_query_log=1#开启慢查询

slow_query_log_file=/var/lib/mysql/mysql-slow.log #设置慢查询路径

long_query_time=0.01#设置慢查询时间

配置完要重启mysql服务才生效

查询慢查询配置是否成功


<center></center>


<center></center>

测试慢查询

use information_schema;

select * from tables;


<center></center>

语句执行时间花了:1.1秒,返回了314行记录;

查看慢查询文件:cat mysql-slow.log


<center></center>

慢查询日志文件中记录了每一天慢查询记录,每一条记录都是以Time:开头;记录了包含登入信息,查询所花的时间,锁花的时间,返回的行数,扫描的记录数,执行的语句。

在线生成慢查询日志文件

1.关闭全局慢查询

SET global slow_query_log=0

查询是否关闭全局慢查询

SHOW VARIABLES LIKE '%query_log%';


<center></center>

设置一个新的慢查询文件

SET global slow_query_log_file='/var/lib/mysql/mysql-slow_new.log'

开启慢查询

SET global slow_query_log=1;

SHOW VARIABLES LIKE '%query_log%';


<center></center>


<center></center>

在慢查询路径中可以看到生成了一个新的慢查询文件。

后面的慢查询信息会记录到新的日志文件当中,

这时我们可以mv以前的慢查询文件进行归档了。

重启mysql服务

service mysql restart

SHOW VARIABLES LIKE '%query_log%';


<center></center>

当重启mysql服务之后,慢日志文件会重新变成之前的在my.cnf里面设置的文件,所以如果你想要重启服务之后慢日志文件还是刚才设置的 mysql-slow_new.log的话你就需要在修改全局设置的同时再修改my.cnf文件,这样就能保证重启之后文件还是之前修改的文件。

总结

配置慢查询对平时收集性能差的语句很有帮助,也有很多工具专门来分析慢查询日志的,其中percona-toolkit就是一个很不错的分析慢查询的工具,如果没有使用可以去了解一下。



mysql正确安全清空在线慢查询日志slow log


1, see the slow log status;

mysql> show variables like '%slow%';
--------------------- ------------------------------------------
| Variable_name       | Value                                    |
--------------------- ------------------------------------------
| log_slow_queries    | ON                                       |
| slow_launch_time    | 2                                        |
| slow_query_log      | ON                                       |
| slow_query_log_file | /mysqllog/slow_log/slow_queries_3306.log |
--------------------- ------------------------------------------
4 rows in set (0.00 sec)

2, stop the slow log server.

mysql> set global slow_query_log=0;
Query OK, 0 rows affected (0.27 sec)

mysql> show variables like '%slow%';
--------------------- ------------------------------------------
| Variable_name       | Value                                    |
--------------------- ------------------------------------------
| log_slow_queries    | OFF                                      |
| slow_launch_time    | 2                                        |
| slow_query_log      | OFF                                      |
| slow_query_log_file | /mysqllog/slow_log/slow_queries_3306.log |
--------------------- ------------------------------------------
4 rows in set (0.00 sec)

mysql>
mysql> show variables like '%slow%'; -- check slow log status
--------------------- ------------------------------------------
| Variable_name       | Value                                    |
--------------------- ------------------------------------------
| log_slow_queries    | OFF                                      |
| slow_launch_time    | 2                                        |
| slow_query_log      | OFF                                      |
| slow_query_log_file | /mysqllog/slow_log/slow_queries_3306.log |
--------------------- ------------------------------------------
4 rows in set (0.00 sec)

3, reset the new path of slow log

mysql> set global slow_query_log_file='/mysqllog/slow_log/slow_queries_3306_new.log';
Query OK, 0 rows affected (0.03 sec)

4, start the slow log server

mysql>
mysql>
mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.01 sec)


mysql> show variables like '%slow%';
--------------------- ----------------------------------------------
| Variable_name       | Value                                        |
--------------------- ----------------------------------------------
| log_slow_queries    | ON                                           |
| slow_launch_time    | 2                                            |
| slow_query_log      | ON                                           |
| slow_query_log_file | /mysqllog/slow_log/slow_queries_3306_new.log |
--------------------- ----------------------------------------------
4 rows in set (0.00 sec)

5, check the slow sql in the new slow log file.

mysql> select sleep(10) as a, 1 as b;
--- ---
| a | b |
--- ---
| 0 | 1 |
--- ---
1 row in set (10.00 sec)

mysql>
[mysql@xxx-xxx ~]$ more /mysqllog/slow_log/slow_queries_3306_new.log
......
Time                 Id Command    Argument
# Time: 140213  6:44:24
# User@Host: root[root] @ localhost []
# Query_time: 10.000365  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1392273864;
select sleep(10) as a, 1 as b;

6, backup the old big slow log file to other directory.

mv /mysqllog/slow_log/slow_queries_3306.log /mysqlbackup/slow_log/slow_queries_3306.log.bak.20140213

您可能感兴趣的文章:
mysql开启慢查询以检查查询慢的语句
清除不断增长的mysql慢查询sql的shell脚本
phpcms教程之mysql配置优化
MySQL 根据 status 状态优化
shell脚本:MySQL慢查询日志和错误日志按天轮询
用MySQL慢日志分析解决MySQL CPU占用高的问题
学习开启mysql慢查询与分析查询语句
mysql数据文件损坏后的修复方法
mysql日志配置(linux与windows)
将mysql查询结果导出到文本的方法

[关闭]