サーバーで低速クエリログを有効にするにはどうすればよいですか?log-slow-queries =[path]
ファイルを追加してローカルホストで有効にしましたmy.ini
が、サーバーでこれを追加する方法がわかりません。私のサーバーはLinuxベースで、PHPバージョン5.2.16を使用しています。
3 に答える
遅いクエリログを有効にすることは、PHPのバージョンとは何の関係もありません。MySQLサーバーで有効にする必要があります。2つの方法で有効にできます
- 実行時
- サーバー起動中
サーバーが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
OSによって異なりますが、多くの場合、、/etc/my.cnf
または/etc/mysql/my.cnf
:にあります。
変更を保存した後、MySqlを再起動する必要があります。これはOSによって異なる場合がありますが、一般的な例を次に示します。
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);