在线开启慢日志查询

有时候我们会遇到线上突然运行比较慢,需要查看一下是否有慢查询。正常情况配置中是不会打开慢日志查询的,因为这个是消耗性能的,如果线上临时打开,又不能重启数据库,就需要通过命令在线设置。

查询当前慢日志开启状态

mysql> show variables like 'slow_query%';
+---------------------+---------------------------------+
| Variable_name       | Value                           |
+---------------------+---------------------------------+
| slow_query_log      | OFF                             |
| slow_query_log_file | D:MysqlDataslow.log |
+---------------------+---------------------------------+
2 rows in set (0.01 sec)

mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.01 sec)

可以看到当前慢日志查询开启状态是OFF,目录是D:MysqlDataslow.log,查询时间是10秒。

开启慢日志查询设置对应参数

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

mysql> set global slow_query_log_file='D:\MysqlData\slow1.log';
Query OK, 0 rows affected (0.02 sec)

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

我们打开了慢日志查询,设定了慢日志的目录和文件名,设置了慢日志的时间。

查看状态确认修改成功

mysql> show variables like 'slow_query%';
+---------------------+------------------------+
| Variable_name       | Value                  |
+---------------------+------------------------+
| slow_query_log      | ON                     |
| slow_query_log_file | D:MysqlDataslow1.log |
+---------------------+------------------------+
2 rows in set (0.00 sec)

mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

我们发现long_query_time还是10秒,这个更新需要我们重新连接一下。退出当前链接,重新登录查看:

mysql> show variables like 'long_query_time';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+
1 row in set (0.01 sec)

我们看到查询时间已经变了。

测试

执行一条慢查询

select sleep(2);

查看D:MysqlDataslow1.log文件,如下:

# Time: 2020-11-05T05:55:44.393317Z
# User@Host: root[root] @ localhost [::1]  Id:     4
# Query_time: 2.000115  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1604555744;
select sleep(2);

配置文件

除了在线打开,也可以在配置文件中配置,一般不建议打开,会影响性能。

[mysqld]
slow-query-log=1
slow_query_log_file="slow.log"
long_query_time=10

配置文件会随着数据库的启动而加载,如果修改了配置文件,想要起作用需要重启数据库服务。

原文地址:https://www.cnblogs.com/studywithallofyou/p/13931358.html