web-dev-qa-db-ja.com

すべてのmysqlクエリをログファイルに記録する方法

Wampサーバー環境でMysql 5.6.12を使用しています。 PHPまたはPHPMyAdminから実行されているクエリをログに記録したい...

18
Qazi
[mysqld]
# Set Slow Query Log
long_query_time = 1
slow_query_log = 1
slow_query_log_file = /usr/log/slowquery.log
log_queries_not_using_indexes = 1

#Set General Log
general_log = on
general_log_file=/usr/log/general.log

本番サーバーでgeneral_logを有効にするとオーバーヘッドが発生するので、避ける必要があります。 slow logから問題のあるクエリを確認できます。

20
Mahesh Patil

これはおそらく一時的に実行したいタイプのタイプなので、設定ファイルを介する代わりにシェルからこれを実行すると便利な場合があります。

> set global general_log_file = "/var/log/mysql/queries.log";
> set global general_log = "ON";
[wait some time, hit some pages, whatever]
> set global general_log = "OFF";

これらの2行をmy.cnfに入れます。

[mysqld]

general_log     = on
general_log_file=/users/ugrad/linehanp/mydb/logfile.txt

これは、PHP/PHPMyAdminだけでなく、あらゆるソースからサーバーへのallクエリをログに記録します。

ただし、注意してください。一般ログを有効にすると、サーバーに大きな負荷がかかる可能性があります。短期間/デバッグのみに控えめに使用します。

ドキュメントは利用可能です ここ 。あちこちに:

実行時に一般クエリログを無効または有効にしたり、ログファイル名を変更したりするには、グローバルのgeneral_logおよびgeneral_log_fileシステム変数を使用します。 general_logを0(またはOFF)に設定してログを無効にするか、1(またはON)に設定してログを有効にします。 general_log_fileを設定して、ログファイルの名前を指定します。

そう、

general_log     = on

そして

general_log     = 1

同義語です!

5
Vérace