如何在不重新启动MySQL的情况下启用MySQL的慢查询日志?
我按照这里的说明: http : //crazytoon.com/2007/07/23/mysql-changing-runtime-variables-with-out-restarting-mysql-server/但似乎只设置阈值。
我需要做其他任何事情,如设置文件path?
根据MySQL的文档
如果没有为--log-slow-queries给出file_name值,则默认名称为 HOST_NAME-的slow.log。 服务器除非在数据目录中创build文件 给出一个绝对path名来指定一个不同的目录。
运行
显示variables
不表示任何日志文件path,我没有看到我的服务器上的任何慢速查询日志文件…
编辑
看起来我正在使用服务器版本5.0.77,所以我需要做的:
SET GLOBAL log_slow_queries = 1;
但我得到:错误1238(HY000):variables“log_slow_queries”是一个只读variables
我假设我将需要重新启动服务器,并在我的configuration中设置log_slow_queries?
尝试SET GLOBAL slow_query_log = 'ON';
也许FLUSH LOGS;
这假定你正在使用MySQL 5.1或更高版本。 如果您使用的是较早版本,则需要重新启动服务器。 这在MySQL手册中有logging 。 您可以在configuration文件或命令行中configuration日志。
对于版本<5.1的慢速查询,以下configuration适用于我:
log_slow_queries=/var/log/mysql/slow-query.log long_query_time=20 log_queries_not_using_indexes=YES
还要注意把它放在configuration文件的[mysqld]
部分下,然后重新启动mysqld
。
查找日志启用或不?
SHOW VARIABLES LIKE '%log%';
设置日志: –
SET GLOBAL general_log = 'ON'; SET GLOBAL slow_query_log = 'ON';
MySQL手册 – 慢查询日志文件
这声明您可以运行以下设置慢日志文件(从5.1.6开始):
set global slow_query_log_file = 'path';
variablesslow_query_log只是控制它是否被启用。
这些工作
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非常高,从而closures慢查询日志。 降低log_slow_time以启用它。 对log_queries_not_using_indexes使用相同的技巧(设置为OFF)。
我认为这个问题是确保MySQL服务器拥有该文件的权限并且可以对其进行编辑。
如果你可以让它有权访问该文件,那么你可以尝试设置:
SET GLOBAL slow_query_log = 1;
如果不是,则在更改configuration文件后,可以始终“重新加载”服务器。 在Linux上,通常是/etc/init.d/mysql reload
这应该在mysql> 5.5上工作
SHOW VARIABLES like'%long%';
SET GLOBAL long_query_time = 1;
如果要启用常规错误日志和慢查询错误日志
开始logging表格而不是文件
mysql> set global log_output =“TABLE”; 启用通用和慢查询日志
mysql> set global general_log = 1; mysql> set global slow_query_log = 1; 日志默认完成的表名
mysql> select * from mysql.slow_log; mysql> select * from mysql.general_log; 有关更多详情,请访问此链接