我按照此处的说明操作: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?
答案 0 :(得分:90)
尝试SET GLOBAL slow_query_log = 'ON';
,也许FLUSH LOGS;
这假设您使用的是MySQL 5.1或更高版本。如果您使用的是早期版本,则需要重新启动服务器。这在MySQL Manual中有记录。您可以在配置文件或命令行中配置日志。
答案 1 :(得分:28)
对于版本的慢速查询< 5.1,以下配置对我有用:
log_slow_queries=/var/log/mysql/slow-query.log
long_query_time=20
log_queries_not_using_indexes=YES
另请注意,将其放在配置文件的[mysqld]
部分下,然后重新启动mysqld
。
答案 2 :(得分:18)
是否启用查找日志?
SHOW VARIABLES LIKE '%log%';
设置日志: -
SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';
答案 3 :(得分:7)
MySQL Manual - slow-query-log-file
这声称您可以运行以下命令来设置慢速日志文件(5.1.6以后):
set global slow_query_log_file = 'path';
变量slow_query_log只控制它是否被启用。
答案 4 :(得分:6)
这些工作
SET GLOBAL LOG_SLOW_TIME = 1;
SET GLOBAL LOG_QUERIES_NOT_USING_INDEXES = ON;
我的设置5.1.42
中断了SET GLOBAL LOG_SLOW_QUERIES = ON;
SET GLOBAL SLOW_QUERY_LOG = ON;
set @@global.log_slow_queries=1;
http://bugs.mysql.com/bug.php?id=32565
看起来最好的方法是将log_slow_time设置得非常高,从而“关闭”慢速查询日志。降低log_slow_time以启用它。对log_queries_not_using_indexes使用相同的技巧(设置为OFF)。
答案 5 :(得分:5)
我认为问题在于确保MySQL服务器拥有该文件的权限并可以对其进行编辑。
如果您可以访问该文件,则可以尝试设置:
SET GLOBAL slow_query_log = 1;
如果没有,您可以在更改配置文件后始终“重新加载”服务器。在linux上它通常是/etc/init.d/mysql reload
答案 6 :(得分:2)
如果要在表中启用常规错误日志和慢查询错误日志而不是文件
开始登录表而不是文件:
set global log_output = “TABLE”;
启用常规和慢速查询日志:
set global general_log = 1;
set global slow_query_log = 1;
查看日志:
select * from mysql.slow_log;
select * from mysql.general_log;
有关详细信息,请访问此链接
答案 7 :(得分:1)
这应该适用于mysql> 5.5
显示变量如'%long%';
SET GLOBAL long_query_time = 1;