環境
- 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
以上です。
