煙と消えるその前に

一服してるうちに忘れる、自分のための備忘録。とかとか

MySQLでバイナリログを定期的に削除する

MySQLを入れてるサバのバイナリログが肥大化してディスクフルを引き起こしたので対応メモ
expire_logs_daysの設定をしてやればOKらしい。
調べればいくらでも情報出てくるけど、この辺って一度問題に直面しないと気付かないんだよなー・・・

  • 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;