Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的mysql慢速查询日志是空的?_Mysql_Mysql Slow Query Log - Fatal编程技术网

为什么我的mysql慢速查询日志是空的?

为什么我的mysql慢速查询日志是空的?,mysql,mysql-slow-query-log,Mysql,Mysql Slow Query Log,我在生产机器上有以下设置: Mysql服务器5.5.19 活动(ps行已选中)my.cnf包含: slow_query_log slow_query_log_file =/opt/app/mysql/log/mysqld-slow.log long_query_time = 1 general_log = OFF general_log_file =/opt/app/mysql/log/mysqld.log log-queries-not-using-indexes

我在生产机器上有以下设置:
Mysql服务器5.5.19
活动(ps行已选中)my.cnf包含:

slow_query_log
slow_query_log_file =/opt/app/mysql/log/mysqld-slow.log
long_query_time     = 1
general_log         = OFF
general_log_file    =/opt/app/mysql/log/mysqld.log
log-queries-not-using-indexes
mysql>显示变量,如“log%”;-->显示“使用索引记录查询”和“记录慢速查询”选项

文件/opt/app/mysql/log/mysqld-slow.log存在,属于mysql,长度为零

问题是,在一台测试机器上,由于日志查询没有使用索引选项,我们的低查询日志很快就被填满了。我们禁用了它,因为它无论如何都需要。现在,我们刚刚开始使用生产数据库,并希望确保相同的事情不会发生在我们身上,我们发现了相同的设置,但日志是空的。我们不能只是重新启动mysqld然后到处玩,因为我们现在是实时的。我只是想理解为什么日志是空的,尽管配置似乎表明它应该记录lotsa查询。在生产服务器和测试服务器上运行的一般应用程序是相同的,因此实际上不太可能发生未索引的查询

所以问题是:我可以检查什么其他配置来查看为什么没有记录任何内容?我不希望它被记录,我只是想确保它不会突然开始疯狂地记录,如果数据库服务器由于某种原因重新启动。我知道我可以通过简单地从my.cnf中删除该选项来实现这一点,但我也想了解为什么它现在没有登录

谢谢,
Ethan

MySQL 5.0版对日志记录功能进行了一些重大更改

日志记录由变量控制。请注意
NONE
表示总体上没有日志记录。您可以这样检查此变量的值:

mysql> SHOW VARIABLES LIKE "log_output";
在您的情况下,您希望对文件进行缓慢的日志记录,因此可以执行以下操作:

mysql> SET GLOBAL log_output=FILE;
mysql> SET GLOBAL slow_query_log=ON;

MySQL 5.0版对日志记录功能进行了一些重大更改

日志记录由变量控制。请注意
NONE
表示总体上没有日志记录。您可以这样检查此变量的值:

mysql> SHOW VARIABLES LIKE "log_output";
在您的情况下,您希望对文件进行缓慢的日志记录,因此可以执行以下操作:

mysql> SET GLOBAL log_output=FILE;
mysql> SET GLOBAL slow_query_log=ON;

可能您的查询运行时间不超过1秒

您可以运行类似于
SELECT SLEEP(10)
的查询,因此它肯定会长于
long\u query\u time
,并将被记录

也可能是查询正在写入文件,但您已经删除了旧的日志文件。因此,服务器仍在向解除关联的文件描述符写入数据。您可以通过
lsof
确认这一点


您可以强制服务器关闭并重新打开日志文件,而无需重新启动mysqld。这将放弃已解除关联的文件。您可以通过以下两种方式之一执行此操作:
FLUSH LOGS
,或者设置全局变量
slow\u query\u log=0
,然后
slow\u query\u log=1

,您的查询运行时间可能不会超过1秒

您可以运行类似于
SELECT SLEEP(10)
的查询,因此它肯定会长于
long\u query\u time
,并将被记录

也可能是查询正在写入文件,但您已经删除了旧的日志文件。因此,服务器仍在向解除关联的文件描述符写入数据。您可以通过
lsof
确认这一点


您可以强制服务器关闭并重新打开日志文件,而无需重新启动mysqld。这将放弃已解除关联的文件。您可以通过以下两种方式之一执行此操作:
FLUSH LOGS
或设置全局变量
slow\u query\u log=0
然后
slow\u query\u log=1

log\u输出当前为文件。所以这不是什么都没有被记录的原因…日志输出当前是文件。所以这不是什么都没有被记录的原因…伟大的答案。对我来说,这个工作和缓慢的查询日志开始弹出与信息大的答案。对我来说,这个工作和缓慢的查询日志开始弹出的信息