環境
- mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1
設定を行うコマンド
- /etc/my.cnf の [mysqld] に記述することで全クエリをログ出力する。
- general_log でオンにし、general_log_file でログファイルパスを指定する。
- ログローテートは、もともとある /etc/logrotate.d/mysqld をほぼそのまま使用した。
# 全クエリログ出力 cp -a /etc/my.cnf /etc/my.cnf.org sed -i -e 's|\[mysqld\]|\[mysqld\]\ngeneral_log=1\ngeneral_log_file=/var/log/mysql/query.log|' /etc/my.cnf mkdir -p /var/log/mysql/ touch /var/log/mysql/query.log chown -R mysql:mysql /var/log/mysql/ # ログローテート cat > /etc/logrotate.d/mysql <<EOF /var/log/mysql/*.log { create 640 mysql mysql notifempty daily rotate 3 missingok compress postrotate # just if mysqld is really running if test -x /usr/bin/mysqladmin && \ /usr/bin/mysqladmin ping &>/dev/null then /usr/bin/mysqladmin flush-logs fi endscript } EOF # 設定完了、再起動 service mysqld restart
全クエリを監視するときに使用するコマンド
tail -f /var/log/mysql/query.log
おわりに
次のコードにすでに組み込みましたわ♪
また、次のページが参考になりました。ありがとう存じます!
- mysql.general_log をローテート?する – Qiita
- MySQLで実行された全てのSQLを記録する「一般クエリログ」 | WEB ARCH LABO
- MySQLでログを出力してみる – yk5656 diary
- MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.2.3 一般クエリーログ
- logrotate の設定をサンプルから勉強します♪【実践的】 – oki2a24
以上です。