ロギングが遅いクエリ


13

最適化を使用する可能性のあるクエリを識別するために、サーバーで低速クエリロギングを有効にしようとしています。単純に聞こえますが、私のファイルは書き込まれていません。エラーなどは発生しませんが、遅いクエリを記録しているようには見えません。構成を変更した後、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を。助けてくれてありがとう、私は割り当てを学んだ!


1
SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');出力を実行して投稿してください。
-RolandoMySQLDBA

1
これを読んだ後にまだ問題がある場合は、log_output変数を確認してください。SET GLOBAL log_output=FILE私のためにそれを修正しました。
molholm

回答:


21

私は答えを得たと思う:

[mysqld]セクションの下にこれらのオプションを配置する必要があります

[mysqld]
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1

mysqlを再起動します

更新2013-03-05 16:36 EST

なぜこれがまだ起こっているのか分かりませんが、これを試してください:

service mysql stop
rm -f /var/logs/my.slow.log
touch /var/logs/my.slow.log
chown mysql:mysql /var/logs/my.slow.log
service mysql start

その後、実行SELECT SLEEP(10);してそれが着地するかどうかを確認します/var/logs/my.slow.log


ありがとうございます!これを反映するように質問を編集しました。
TheMethod

ちょっと、好奇心が強いのですが、VMの下でDebianシステムを実行しています。返信のパスは正しいですか?/var/logs/代わりに/var/log
Silviu-マリアン

ただの情報。CentOS 6.6 mysql 5.1.73環境でも「touch&chown」が必要です。
フミスキーウェルズ

私は彼らがこれらを入れようとしたシステムに出くわしましたが[mysqld_safe]、それは機能しませんでした。それらを置くことで[mysql]問題は解決しました。
マイケルハンプトン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.