为什么 MySQL 慢查询日志不存在?

为什么 MySQL 慢查询日志不存在?

我今天在 CentOS 服务器上查找 MySQL 慢查询日志,但一直没找到。我甚至做了一个“SELECT SLEEP(2)”测试,希望能够创建这个文件。请注意,我对服务器不是很了解,所以任何帮助我都非常感谢。

 7
  8 [mysql.server]
  9 user=mysql
 10 basedir=/var/lib
 11
 12 [mysqld]
 13 long_query_time = 1
 14 log_slow_queries=/var/log/mysql_slow_queries.log
 15 log=/var/log/mysql.query.log
 16
 17 ## FINE TUNING ##
 18
 19 key_buffer              = 16M
 20 max_allowed_packet      = 16M
 21 thread_stack            = 128K
 22 thread_cache_size       = 8
 23 query_cache_limit       = 1M
 24 query_cache_size        = 16M
 25
 26 [mysqld_safe]
 27 log-error=/var/log/mysqld.log
 28 pid-file=/var/run/mysqld/mysqld.pid
 29 safe-show-databases

如您所见,路径显示为:/var/log/mysql_slow_queries.log——但找不到此文件。但是,我在目录中找到了 mysql.query.log 和 mysqld.log。为什么我的 MySQL Slow Queries 文件不存在?

答案1

对文件进行更改后my.cnf,您需要重新启动 MySQL 服务。不确定您使用的是哪种系统,但通常service mysqld restart可以正常工作,或者service mysql restart— 只需查看/etc/init.d/

此外,请确保该文件已创建并可在磁盘上访问:

touch /var/log/mysql_slow_queries.log
chown mysql:mysql /var/log/mysql_slow_queries.log

此外,时间在数据库中并不那么重要,而没有索引的查询则更重要。考虑将以下内容添加到您的my.cnf。当然,完成后请重新启动 MySQL:

log-queries-not-using-indexes

答案2

触摸/var/log/mysql_slow_queries.log

chown mysql:mysql

并重新启动 mysql 服务

mysql -u -pmy密码

选择睡眠(60);

猫/var/log/mysql_slow_queries.log

/usr/sbin/mysqld, Version: 5.5.28-log (Source distribution). started with:
Tcp port: 3306  Unix socket: /var/run/mysql/mysql.sock
Time                 Id Command    Argument
# Time: 130904 23:22:14
# User@Host: root[root] @ localhost []
# Query_time: 60.002284  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1378329734;
select sleep(60);

答案3

添加slow_query_log=1[mysqld]部分my.cnf并重新启动 mysqld。

答案4

请注意,在 Centos 7 中,默认情况下,无需重新启动 MySQL,慢查询日志在此位置启用:

/var/lib/mysql/$HOSTNAME.log

查看其他答案以了解如何应用持久配置以及如何将其移动到另一个位置。

相关内容