FreeBSD/MySQL/Loglotate

MySQLのログローテート

dokuwiki.fl8.jp転載済

MySQLのログってnewsyslogなんかに記述しても上手くローテートしてくれません。
新しいログファイルの使用を MySQL に強制するには、mysqladmin flush-logs を使用する必要があります。
Linuxのrpmなんかだと、ローテート用のプログラムが用意されてるみたいなんですが、
FreeBSDはそんなのないので、簡単なシェルを書いてCronで実行するような処理が必要になります。

MySQLのログをローテート

▼/etc/newsyslog.confに記述。
今回は一週間分、圧縮せずにローテートするよう記述。

# vi /etc/newsyslog.conf
-----------------追加--------------------
/var/log/mysql/mysql.log                660  7    *    @T00   B
-----------------追加--------------------


▼/etc/crontabにパーミッション変更とMySQLのflush-logsを実行。

# vi /etc/crontab
01 0 * * * root /usr/sbin/chown mysql /var/log/mysql/mysql.log ; /usr/local/bin
/mysqladmin -u root -p[MySQLのrootパスワード] flush-logs

※root -p[MySQLのrootパスワード]の個所は-pの後にスペースは入れないようにする。