如何在我的服务器上启用MySQL慢查询日志?

Jui*_*ice 25 mysql

如何在我的服务器上启用慢速查询日志?我已经通过添加启用了我的本地主机上log-slow-queries =[path]my.ini文件,但不知道如何添加这个我的服务器上.我的服务器是基于Linux的,并且具有PHP版本5.2.16.

Rit*_*yap 46

启用慢速查询日志与PHP版本无关.您必须在MySQL服务器中启用它.您可以通过两种方式启用

  1. 在运行时
  2. 在服务器启动期间

如果您的服务器高于5.1.6,您可以在运行时本身设置慢查询日志.您必须为此执行此查询.

set global log_slow_queries = 1;
set global slow_query_log_file = <some file name>;
Run Code Online (Sandbox Code Playgroud)

或者,您也可以在my.cnf/my.ini选项文件中设置此选项

log_slow_queries = 1; 
slow_query_log_file = <some file name>;
Run Code Online (Sandbox Code Playgroud)

如果更改选项文件,则需要重新启动MySQL服务器.

mysql的选项文件的位置可以在这里找到http://dev.mysql.com/doc/refman/4.1/en/mysql-config-wizard-file-location.html

仅供参考:log_slow_queries已在MySQL 5.6.1中删除,slow_query_log而是用于代替. http://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_log-slow-queries

但是对于性能,您可以将日志输出(选项log_output)设置为TABLE.你也可以看看其他的慢查询日志选项,比如long_query_time,log-queries-not-using-indexes

  • 我不知道这个条目是如何被接受的,但我的下面却没有.`log_slow_queryies` [sic]甚至拼写不正确,在MySQL 5.1.29中已弃用.请参阅http://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_log-slow-queries (2认同)

Ros*_* II 37

您可以通过运行以下命令临时设置它:

set global slow_query_log = 1;
set global slow_query_log_file = '/var/log/mysql-slow.log';
Run Code Online (Sandbox Code Playgroud)

但重新启动mysql时,您的更改将被撤消.

您可以通过在my.cnf文件中添加以下内容来永久设置它:

slow-query-log=1
slow-query-log-file=/var/log/mysql-slow.log
Run Code Online (Sandbox Code Playgroud)

的位置my.cnf因操作系统而异,但通常是发现/etc/my.cnf,或/etc/mysql/my.cnf:

保存更改后,您需要重新启动MySql.这可能因操作系统而异,但以下是一些常见示例:

sudo /etc/init.d/mysqld restart
Run Code Online (Sandbox Code Playgroud)

sudo service mysqld restart
Run Code Online (Sandbox Code Playgroud)


Pas*_*get 13

首先(作为根:)

mkdir /var/log/mysql
touch /var/log/mysql/log-slow-queries.log
chown mysql:mysql -R /var/log/mysql
Run Code Online (Sandbox Code Playgroud)

然后在/etc/my.conf中的[mysqld]下(或者你的配置文件是:)

slow_query_log = 1
log-queries-not-using-indexes
long_query_time=1
log-slow-queries=/var/log/mysql/log-slow-queries.log
Run Code Online (Sandbox Code Playgroud)

下一个:

service mysql restart
Run Code Online (Sandbox Code Playgroud)

最后:

mysql
mysql> SELECT SLEEP(10);
mysql> quit
Run Code Online (Sandbox Code Playgroud)

验证:

cat /var/log/mysql/log-slow-queries.log

/usr/sbin/mysqld, Version: 5.5.42-cll (MySQL Community Server (GPL)). started with:
Tcp port: 0  Unix socket: (null)
Time                 Id Command    Argument
# Time: 150727  0:05:17
# User@Host: root[root] @ localhost []
# Query_time: 10.000215  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1437973517;
select sleep(10);
Run Code Online (Sandbox Code Playgroud)