【備忘録】Mysql のバイナリログの保持期間について

 最近、Mysql に触れる機会があるのですが、バイナリログの保持期間を指定していないシステムが多く、ディスク容量が逼迫するという経験をしています。DBの更新ログなので、デフォルト値が無期限というのも、分からなくもないですが...

 というわけで、意外と忘れられがちな、バイナリログの保持期間の設定ですが、 /etc/my.cnf の、 [mysqld] に下記指定を入れると、バイナリログ切り替わり時に、 Purge してくれます。

expire-logs-days=<保持する日数>

 一つ問題なのは、 /etc/my.cnf に設定した場合は、 mysql の再起動が必要。業務上、再起動をすることができないシステムあると思います。
 そんなときは、 set コマンドで variables の値を動的に書き換えてしまえばいいのです。

set GLOBAL expire_logs_days = <保持する日数>

※もちろん、 root 権限を持ったユーザでの更新が必要です。

 この保持期間ですが、ログがローテートされるタイミングで値が読まれるため、ローテートされなければ、この日数を超えたログも残り続けることになります。