Home > MySQL PostgreSQL > MySQLのクエリログを取得する方法

MySQLのクエリログを取得する方法


MySQLで開発を行っていてどんなクエリが発行されているか、バグの原因はどこかを探す手がかりとして、クエリログというのがある。これは発行したクエリを逐次ログに保存してくれるもの。

フレームワーク側でログをとる方法もいいが、単純にクエリを残したい場合はMySQLの機能を使うと楽。

MySQLの起動スクリプトを書き換える

/etc/rc.d/init.d/mysqld の起動スクリプトを vi で開いて編集する。

/usr/bin/mysqld_safe  --defaults-file=/etc/my.cnf --pid-file="$mypidfile" >/dev/null 2>&1 &
↓
/usr/bin/mysqld_safe  --defaults-file=/etc/my.cnf --log --pid-file="$mypidfile" >/dev/null 2>&1 &

mysqld を起動させる際に、--log という引数を渡してあげるとクエリのログを保存するようになる。

クエリログが保存される場所

デフォルトだと /var/lib/mysql/ にクエリログが保存される。保存場所を変更するには /etc/my.cnf を開いて

log=/var/log/mysql_query/query.log

と指定してあげれば変更可能。

cronにログのローテーションを登録

なぜか logrotate だとうまくローテーションできなかったので、cronを使ってローテーションさせる。

#!/bin/sh

NOWDATE=`date '+%Y%m%d'`
mv /var/lib/mysql/www.log /var/lib/mysql/www.log."$NOWDATE"
mysqladmin flush-logs
gzip /var/lib/mysql/www.log."$NOWDATE"

これで毎日圧縮されたクエリログができあがる。

なにかあったときの検証用として非常に便利なクエリログだけど、ログの量が半端じゃなくなるので開発段階のみで使用するのがベスト。運用段階でもきちんとクエリ管理するには、システム側でエラーを拾って処理してあげるべき。

Comments:0

Comment Form

Trackbacks:0

TrackBack URL for this entry
http://blog.tofu-kun.org/mt-tb.cgi/334
Listed below are links to weblogs that reference
MySQLのクエリログを取得する方法 from Webプログラマー+WebデザイナーなZARU日記

Home > MySQL PostgreSQL > MySQLのクエリログを取得する方法

Profile

zaru

Name : zaru

Webプログラマ+Webデザイナで、Webディレクタやってます。Twitterやっているので、ぜひフォローしてやってくださいませ。Twitter - zaru。また、そのほかのプロフィールについては、iddy - zaruを見てください。

Search
Feeds
Others

Return to page top