如何在不重启MySQL的情况下启用MySQL的慢查询日志?

mma*_*tax 86 mysql

我按照这里的说明操作:http://crazytoon.com/2007/07/23/mysql-changing-runtime-variables-with-out-restarting-mysql-server/但似乎只设置了阈值.

我是否需要做其他任何事情,例如设置文件路径?

根据MySQL的文档

If no file_name value is given for --log-slow-queries, the default name is 
host_name-slow.log. The server creates the file in the data directory unless 
an absolute path name is given to specify a different directory. 

运行

SHOW VARIABLES

不指示任何日志文件路径,我在我的服务器上看不到任何慢查询日志文件...

编辑

看起来我正在使用服务器版本5.0.77,所以我需要这样做:

SET GLOBAL log_slow_queries = 1;

但我得到:ERROR 1238(HY000):变量'log_slow_queries'是一个只读变量

我假设我需要重新启动服务器并在我的配置中设置log_slow_queries?

Ian*_*ory 90

尝试SET GLOBAL slow_query_log = 'ON';也许吧FLUSH LOGS;

这假设您使用的是MySQL 5.1或更高版本.如果您使用的是早期版本,则需要重新启动服务器.这在MySQL手册中有记录.您可以在配置文件或命令行中配置日志.

  • FLUSH SLOW LOGS有5.5版本! (8认同)

小智 28

对于版本<5.1的慢速查询,以下配置对我有用:

log_slow_queries=/var/log/mysql/slow-query.log
long_query_time=20
log_queries_not_using_indexes=YES
Run Code Online (Sandbox Code Playgroud)

另请注意将其置于[mysqld]配置文件的一部分并重新启动mysqld.

  • 另外,你必须手动创建日志文件:`sudo mkdir/var/log/mysql``sud touch/var/log/mysql/slow-query.log``sud chown -R _mysql/var/log/mysql/` (6认同)
  • 它是log_slow_queries而不是log-slow-queries (2认同)

小智 18

是否启用了查找日志?

SHOW VARIABLES LIKE '%log%';
Run Code Online (Sandbox Code Playgroud)

设置日志: -

SET GLOBAL general_log = 'ON'; 

SET GLOBAL slow_query_log = 'ON'; 
Run Code Online (Sandbox Code Playgroud)


Mar*_*tin 7

MySQL手册 - 慢查询日志文件

这声称您可以运行以下命令来设置慢速日志文件(5.1.6以后):

set global slow_query_log_file = 'path';
Run Code Online (Sandbox Code Playgroud)

变量slow_query_log只控制它是否被启用.


mik*_*wn2 6

这些工作

SET GLOBAL LOG_SLOW_TIME = 1;
SET GLOBAL LOG_QUERIES_NOT_USING_INDEXES = ON;
Run Code Online (Sandbox Code Playgroud)

打破我的设置5.1.42

SET GLOBAL LOG_SLOW_QUERIES = ON;
SET GLOBAL SLOW_QUERY_LOG = ON;
set @@global.log_slow_queries=1;
Run Code Online (Sandbox Code Playgroud)

http://bugs.mysql.com/bug.php?id=32565

看起来最好的方法是将log_slow_time设置得非常高,从而"关闭"慢速查询日志.降低log_slow_time以启用它.对log_queries_not_using_index使用相同的技巧(设置为OFF).


Jon*_*han 5

我认为问题是确保MySQL服务器拥有该文件的权限并可以编辑它.

如果您可以让它访问该文件,那么您可以尝试设置:
SET GLOBAL slow_query_log = 1;

如果没有,您可以在更改配置文件后始终"重新加载"服务器.在linux上它通常/etc/init.d/mysql reload