MySQLでバイナリログを定期的に削除する
MySQLを入れてるサバのバイナリログが肥大化してディスクフルを引き起こしたので対応メモ
expire_logs_daysの設定をしてやればOKらしい。
調べればいくらでも情報出てくるけど、この辺って一度問題に直面しないと気付かないんだよなー・・・
- OS
- CentOS 5.8
- MySQL
- バージョン 5.5
- インストールディレクトリとかはデフォルトのまま
デフォルトの設定確認
expire_logs_days=0がデフォルトで、この場合はバイナリログの削除は行わない。
実際にサバで確認してみると確かに0だった。
mysql> show global variables like 'expire_logs_days'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | expire_logs_days | 0 | +------------------+-------+ 1 row in set (0.00 sec)
expire_logs_daysを設定する
今回はmy.confに直接設定を書いてMySQLを再起動する。
今回は30日分のbinlogを保存するようにした。
$ diff my.cnf my.cnf.org 5d4 < expire_logs_days=30
再起動後に確認してみると、変更されてた。
起動時にバイナリログの整理もやってくれる模様。ディスクがずいぶんすっきりしててハッピーになった。
mysql> show global variables like 'expire_logs_days'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | expire_logs_days | 30 | +------------------+-------+ 1 row in set (0.00 sec)
※再起動しない場合、以下で直接expire_logs_days変更できる
この場合、MySQLを再起動すると値がデフォルトに戻ってしまうので注意
mysql> SET GLOBAL expire_logs_days = 30;