如何在我的服务器上启用慢查询日志?我已通过添加文件在本地主机上启用它log-slow-queries =[path]
,my.ini
但不知道如何在我的服务器上添加它。我的服务器是基于 Linux 的,并且有 PHP 版本 5.2.16。
3 回答
启用慢查询日志与 PHP 版本无关。您必须在 MySQL 服务器中启用它。您可以通过两种方式启用
- 在运行时
- 在服务器启动期间
如果您的服务器高于 5.1.6,您可以在运行时本身中设置慢查询日志。您必须为此执行此查询。
set global log_slow_queries = 1;
set global slow_query_log_file = <some file name>;
或者,您可以在 my.cnf/my.ini 选项文件中设置此选项
log_slow_queries = 1;
slow_query_log_file = <some file name>;
选项文件改变的地方,需要重启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
您可以通过运行以下命令来临时设置它:
set global slow_query_log = 1;
set global slow_query_log_file = '/var/log/mysql-slow.log';
但是当 mysql 重新启动时,您的更改将被撤消。
您可以通过将以下内容添加到my.cnf
文件中来永久设置它:
slow-query-log=1
slow-query-log-file=/var/log/mysql-slow.log
的位置my.cnf
因操作系统而异,但通常位于/etc/my.cnf
或中/etc/mysql/my.cnf
:
保存更改后,您需要重新启动 MySql。这可能因操作系统而异,但以下是一些常见示例:
sudo /etc/init.d/mysqld restart
和
sudo service mysqld restart
首先(作为根:)
mkdir /var/log/mysql
touch /var/log/mysql/log-slow-queries.log
chown mysql:mysql -R /var/log/mysql
然后在 /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
下一个:
service mysql restart
最后:
mysql
mysql> SELECT SLEEP(10);
mysql> quit
确认:
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);