[MySQL Slow log]平滑清除在线慢查询日志slow log的流程

2019-04-21 08:46|来源: 网路

1、查看慢查询日志状态

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)


-- see the query time

mysql> show variables like '%long_query_time%';

+-----------------+----------+

| Variable_name   | Value    |

+-----------------+----------+

| long_query_time | 0.500000 |

+-----------------+----------+

1 row in set (0.00 sec)

mysql> 


2、停止慢查询日志服务

mysql> set global slow_query_log=0;

Query OK, 0 rows affected (0.27 sec)


查看慢查询日志,可以发现slow_query_log被设置为OFF了

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、重置慢查询日志存放路径

mysql> set global slow_query_log_file='/mysqllog/slow_log/slow_queries_3306_new.log';

Query OK, 0 rows affected (0.03 sec)


4,、启动慢查询日志服务

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,、使用sleep测试新设置的慢查询日志是否生效.

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、备份原有的慢查询日志或者删除掉

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


参考:https://blog.csdn.net/mchdba/article/details/19161097 

相关问答

更多

在MySQL的慢查询日志中,“SELECT / *!N SQL_NO_CACHE * / * FROM mytable`”意味着什么?(What does “SELECT /*!N SQL_NO_CACHE */ * FROM `mytable`” mean in in MySQL's slow query log?)

查询可能是“缓慢”的,因为客户端(您的备份系统)不得不读取表中的每一行; 这显然是199秒。 请注意,如果你做了类似的事情: SELECT * FROM table LIMIT 100; // read 50 rows // sleep for 5 minutes // read last 50 rows 上面的查询会出现在慢日志中,因为从第一次启动时开始,到可能完成时(通过向您发送最后一次请求的行),花费了5分钟时间。 The query is probably 'slow' becau ...

如何记录特定数据库的mysql慢查询(How to log mysql slow queries for specific database)

你可以使用mysql慢登录文件然后用这个命令查找特定数据库的慢日志行: cat /var/lib/mysql/slow.log |grep -A 3 {your_db_name} you can use mysql slow log in file then use this command for find slow log row of specific database: cat /var/lib/mysql/slow.log |grep -A 3 {your_db_name}

使用Percona pt-query-digest仅分析特定数据库的慢查询日志(Using Percona pt-query-digest to analyse slow query log for a specific database only)

pt-query-digest --filter '$event->{db} eq "mydatabase"' ...other arguments... pt-query-digest --filter '$event->{db} eq "mydatabase"' ...other arguments...

MySQL是否具有查询队列以及慢速日志中query_time背后的内容?(Does MySQL have query queues and what's behind query_time in the slow log?)

没有像你描述的队列。 查询开始时,连接专用于运行它。 由于连接之间共享的各种内容,它可能被大量“互斥锁”中的任何一个阻止。 在查询运行时,可能必须等待I / O从磁盘读取块。 slowlog中的查询时间本质上是查询的时钟时间。 如果有其他连接挂在互斥锁上或执行大量I / O,则通常需要1秒的查询可能需要3秒。 缓存可以让查询运行得更快。 第一次运行查询(重启mysql后),由于所有未缓存的I / O,它将运行缓慢。 如果您使用的是Engine MyISAM,由于MyISAM的表锁定,“lock_t ...

Mysql slow.log用户具体(Mysql slow.log user specific)

如果使用MySQL 5.6,您可以使用性能模式,并查看那里的不同语句摘要。 有帐户摘要(someuser @ somehost),仅通过用户名(someuser)或仅通过主机(somehost)。 请参阅下表: performance_schema.events_statements_summary_by_account_by_event_name performance_schema.events_statements_summary_by_user_by_event_name performa ...

Mysql慢日志:简单的选择查询需要26秒(Mysql slow log: simple select query takes 26 seconds)

如果强制它使用主键而不是进行全表扫描,可能会更快。 如果您使用的是innodb,请尝试SELECT tag FROM tags USE INDEX(PRIMARY) 。 或者,您也可以将WHERE tag_id > 0添加到查询中。 根据我的理解,如果查询中没有使用索引,innodb将执行范围扫描,这比索引扫描更昂贵。 如果强制它使用索引,它将扫描索引而不是查找表的所有行,这可能会更快。 可能还有更多在这里发挥作用,我不像以前那样精通mysql / innodb内部。 如果你不是,那么我猜测瓶颈在 ...

mysql慢查询日志(mysql slow query log)

这是一个很好的阅读并提出了一些工具: http : //www.mysqlperformanceblog.com/2006/09/06/slow-query-log-analyzes-tools/ 万一你错过了: http : //www.maatkit.org/doc/mk-query-digest.html是建议的工具。 但无论如何还是值得一读。 如果你必须自己写一些东西,那么在cpan上似乎有一个方便的perl模块。 https://metacpan.org/pod/MySQL::Log:: ...

MySQL“SET NAMES”靠近慢查询日志的顶部(MySQL “SET NAMES” near the top of the slow query log)

如果所有查询都很慢,则SET NAMES在服务器上的优先级可能非常低,因此请等到负载停止运行。 如果您有很多其他需要长时间执行的查询,您可能希望先尝试优化这些查询。 这个“问题”的另一个解决方案是将其添加到服务器上的my.cnf: [mysqld] init-connect = 'SET NAMES utf8' 这可以确保在客户端连接时将字符集设置为UTF-8,因此客户端不必等待此“查询”的结果。 您可能希望在软件中禁用SET NAMES查询。 主要是,我不会太担心,除非你真的有很多设置名称需要 ...

为什么mysql慢速日志会报告这些非慢速查询(Why does mysql slow log reports these non-slow queries)

MySQL还会记录不使用索引的查询 my.cnf中的选项 log-queries-not-using-indexes用于控制它。 我可以从my.cnf的这个片段中看到我的关闭(通过评论) # Here you can see queries with especially long duration log_slow_queries = /var/log/mysql/mysql-slow.log long_query_time = 2 #log-queries-not-using-i ...