【MySQL】全クエリをログ出力し、ログローテート設定を行う

スポンサードリンク


環境

  • 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

おわりに

次のコードにすでに組み込みましたわ♪

また、次のページが参考になりました。ありがとう存じます!

以上です。

コメントを残す