mysqladmin flush-logsを実行して、ログファイルをまとめて更新する方法もありますが、flush-logsのみならずbinlogファイルまでも更新はさせたくありませんでした。
MySQL 5.5.3移行では各種ログを個別にフラッシュできるようになっているので、これを利用してslow logのみを更新します。
ローテートファイルを作成
# emacs /etc/logrotate.d/mysql-log /var/lib/mysql/slow.log { daily missingok rotate 30 compress delaycompress notifempty dateext postrotate mysql -uroot -pxxxxxxxxxxxxxxx -e'FLUSH SLOW LOGS' endscript }
logrotateを実行せずにテスト
# logrotate -dv /etc/logrotate.d/mysql-log
logrotateを手動実行
# logrotate -f /etc/logrotate.d/mysql-log
ローテートされたことを確認
# ls -al /var/lib/mysql | grep '\.log' -rw-rw---- 1 mysql mysql 185 Nov 28 10:16 slow.log -rw-rw---- 1 mysql mysql 165 Nov 28 03:48 slow.log-20141127.gz -rw-rw---- 1 mysql mysql 173 Nov 28 10:20 slow.log-20141128.gz
Enjoy!
参考)
MySQL :: MySQL 5.6 Reference Manual :: 13.7.6.3 FLUSH Syntax
http://dev.mysql.com/doc/refman/5.6/en/flush.html