mysql のログ

[`evernote` not found]
Bookmark this on Hatena Bookmark
Share on Facebook
LINEで送る

一般クエリログ、スロークエリログ、バイナリクエリログ、エラーログ、があるらしい。
エラーログは、意識しなくても標準で吐くようになっていることが多いと思う。
設定は my.cnf で行なうとして、設定方法はぐぐってもらうとして、各ログについて調べた内容とか自分の運用で知ったことをメモっておく。

エラーログ
mysql のエラー出力をログっているっぽい。
普通に稼動していると、起動時と停止時のログしか出てこない。
なんかエラー起こすとログに残るけど、その直前に実行されていた SQL 文とかサッパリ不明。
ざっと 1ヶ月くらい運用していて、サーバが DB エラーで 3 回~ 4 回くらい停止したのだけれど、クラッシュしたよ、ってメッセージしか残ってなくて原因がワケワカメ。
だみだこりゃ。
一般クエリログ
発行された全SQL文を残すらしい。これをオンにして再起動かけたら、一発でログのサイズが 6KB, 100行以上 とかになる。
これを吐きながら、月に 3回程度のエラーを待つのは容量の面やいざエラーが起こった時の解析量から見て面倒くさい。
多分、最後の手段。
スロークエリログ
インデックスを使わなかったクエリ、とか 1回の実行に○秒以上要したクエリ、とかを残せる。
中期的に観察するのに、ログを間引くのにはいいかも。でもこれで原因が特定できなかったら一般エラーログに託すことになるんだろーなー。
ちゃんとインデックスを作ってないと、めっちゃログ出るっぽい。

なんかインデックスを適切に作るには、explain select ほげほげ って感じでやるらしい。
ログ見て、特定のsql文が沢山出てきたら、ちゃんと調べよう。

バイナリログ
トランザクションとかの情報らしくって、DB のレプリケーションとか、復元後、最新状態までロールフォワードしたりするのに使われるらしい。
ファイル出力の設定が my.cnf にコメントアウト状態で書かれているけど、web で調べると DB 内に溜まったバイナリログを見たり消したりする方法が出てくる。
そも、他のログも DB 内に溜められるはずだけど。
まー個人運用レベルでは必要なさげ。例えば我が家では、定期的に mysqldump して、別 HDD に書き出している。とりあえずうちの鯖くらいなら、これで良いと思う。