知识点
相关文章
更多最近更新
更多[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
相关问答
更多-
查询可能是“缓慢”的,因为客户端(您的备份系统)不得不读取表中的每一行; 这显然是199秒。 请注意,如果你做了类似的事情: SELECT * FROM table LIMIT 100; // read 50 rows // sleep for 5 minutes // read last 50 rows 上面的查询会出现在慢日志中,因为从第一次启动时开始,到可能完成时(通过向您发送最后一次请求的行),花费了5分钟时间。 The query is probably 'slow' because th ...
-
有什么数据库专业书籍介绍?[2022-05-19]
mysql -
你可以使用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}
-
pt-query-digest --filter '$event->{db} eq "mydatabase"' ...other arguments... pt-query-digest --filter '$event->{db} eq "mydatabase"' ...other arguments...
-
没有像你描述的队列。 查询开始时,连接专用于运行它。 由于连接之间共享的各种内容,它可能被大量“互斥锁”中的任何一个阻止。 在查询运行时,可能必须等待I / O从磁盘读取块。 slowlog中的查询时间本质上是查询的时钟时间。 如果有其他连接挂在互斥锁上或执行大量I / O,则通常需要1秒的查询可能需要3秒。 缓存可以让查询运行得更快。 第一次运行查询(重启mysql后),由于所有未缓存的I / O,它将运行缓慢。 如果您使用的是Engine MyISAM,由于MyISAM的表锁定,“lock_time”通 ...
-
Mysql slow.log用户具体(Mysql slow.log user specific)[2022-02-23]
如果使用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 performance_s ... -
如果强制它使用主键而不是进行全表扫描,可能会更快。 如果您使用的是innodb,请尝试SELECT tag FROM tags USE INDEX(PRIMARY) 。 或者,您也可以将WHERE tag_id > 0添加到查询中。 根据我的理解,如果查询中没有使用索引,innodb将执行范围扫描,这比索引扫描更昂贵。 如果强制它使用索引,它将扫描索引而不是查找表的所有行,这可能会更快。 可能还有更多在这里发挥作用,我不像以前那样精通mysql / innodb内部。 如果你不是,那么我猜测瓶颈在其他地方( ...
-
mysql慢查询日志(mysql slow query log)[2022-06-15]
这是一个很好的阅读并提出了一些工具: 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::Parse ... -
如果所有查询都很慢,则SET NAMES在服务器上的优先级可能非常低,因此请等到负载停止运行。 如果您有很多其他需要长时间执行的查询,您可能希望先尝试优化这些查询。 这个“问题”的另一个解决方案是将其添加到服务器上的my.cnf: [mysqld] init-connect = 'SET NAMES utf8' 这可以确保在客户端连接时将字符集设置为UTF-8,因此客户端不必等待此“查询”的结果。 您可能希望在软件中禁用SET NAMES查询。 主要是,我不会太担心,除非你真的有很多设置名称需要这么长时间 ...
-
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-indexe ...