最適化を使用する可能性のあるクエリを識別するために、サーバーで低速クエリロギングを有効にしようとしています。単純に聞こえますが、私のファイルは書き込まれていません。エラーなどは発生しませんが、遅いクエリを記録しているようには見えません。構成を変更した後、mysqlを再起動することを覚えています。
MySQL Ver 5.1.61を使用しています。my.cnfの内容は次のとおりです。
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1
ファイル/var/logs/my.slow.logには所有者としてmysqlがあります。これもデバッグのために、ログファイルのすべてに読み取り/書き込みを許可しました。
上記のlong_query_timeが1に設定されているのは、それが機能しているかどうかだけを見たいからです。私はそれを低く設定しようとしました(例えば0.3)が、まだ何も記録されていません。アプリの実行中のクエリには1秒以上かかることがわかってSELECT sleep(10);
います。また、テストのためにターミナルで意図的にログクエリ()を実行しましたが、ログはまだ空です。
私はこれが機能するはずであると私が見ることができるものから、ドキュメントに目を通しました。誰が私が間違っているのかについての提案はありますか?アドバイスをいただければ幸いです。
編集:コメントで尋ねられたように、私はクエリを実行しました:
`SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`
結果:
10.0000000
/var/run/mysqld/mysqld-slow.log
OFF
これらはデフォルトであると考えているため、明らかに私の構成の変更は考慮されていません。変更しているmy.cnfファイルが、無効な値を入力した場合にmysqlが再起動時にエラーになるように解析されていることは確かです。ここで何が起こっているのでしょうか?
別の編集:
@RolandoMySQLDBAのアドバイスを受けて、遅いクエリ設定行を[mysqld]
私の設定の下に移動すると、保存されているようです。上記のvariable_valueクエリの結果は次のとおりです。
1.0000000
/var/logs/my.slow.log
ON
ただし、ファイルmy.slow.logが書き込まれているのを見ていません。私は、ファイルがmysqlのが所有しているとして、それはアクセス許可の問題だとは思わないし、私は、ファイル上のすべてのユーザーのすべての権限を追加しました。誰もこれが機能しない理由を考えることができますか?
編集:解決しました!スロークエリログへのパスが間違っていた、/var/log/my.slow.logの代わりに/ var / *ログインしている必要がありますS * / my.slow.logを。助けてくれてありがとう、私は割り当てを学んだ!
SET GLOBAL log_output=FILE
私のためにそれを修正しました。
SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');
出力を実行して投稿してください。