- 2007年7月21日 11:51
- MySQL PostgreSQL
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"
これで毎日圧縮されたクエリログができあがる。
なにかあったときの検証用として非常に便利なクエリログだけど、ログの量が半端じゃなくなるので開発段階のみで使用するのがベスト。運用段階でもきちんとクエリ管理するには、システム側でエラーを拾って処理してあげるべき。
- Newer: MacBook Pro 15インチ 2.2Ghzを買いました
- Older: 我が家に黒いデスクがやってきた
Comments:0
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日記
