MySQL で実行された全ての SQL クエリをログ出力する設定方法について。
設定自体は簡単なのですが、思わぬところでつまづいたので覚え書きしておきます。
確認環境は、CentOS 6.3、MySQL 5.5.27 です。
設定方法
/etc/my.cnf の [mysqld] セクションにログ出力先を指定します。
[mysqld] # ログ出力先 log=/var/log/mysql_query.log
指定したログファイルを事前に作成して、書き込めるよう権限も与えておきます。自分は、ファイルが無ければ自動作成されるという固定観念にとらわれていて、なんでログが出力されないのかここでしばらく時間を取られました・・・。
# touch /var/log/mysql_query.log # chmod 640 /var/log/mysql_query.log # chown mysql:mysql /var/log/mysql_query.log
あとは、MySQL を再起動すれば OK です。
# /etc/init.d/mysqld restart
何か SQL を実行して、ログが出力されることを確認してください。
ちなみに、クエリログはかなりデータ量が多くなります。デバッグの時だけ一時的に設定するとか、ログファイルのローテーションをちゃんと設定するとか、運用にはお気を付けください。