No Image

MySQLでバイナリログを削除する/自動削除する方法

毎年、年明け最初の仕事はサーバの確認・整理と決まっている。
普通年末にやるのかもしれないが、年末はだいたいバタバタしてるので年明け早々にやることが多い。
だいたい溜まっているのはMySQLのバイナリログ。
これ、そのまま削除してもいいんだけど、少々恐い気もしないでもない。
削除しようと思っても、毎回コマンド覚えてないので覚え書きです。
コマンドラインのツールを使ってログイン

# mysql -u root -p

バイナリログの状態を確認

> show master logs;

一覧が出てくる。
だいたい最後のログだけを残しておけばいい。
例えば、最後のログが ”ns-bin.089″ だったら次のように入力する。

> PURGE MASTER LOGS TO ‘ns-bin.089’;

これで直前の”ns-bin.088″までが削除される。
自動削除したい場合は、my.cnfファイルの[mysqld]カテゴリに次の一行を入れる。

set-variable = expire_logs_days = 30

これで30日経ったバイナリログが自動的に削除される。
なお、my.cnf書き換え後、MySQLを再起動しないと反映されないので注意が必要。
再起動が嫌なら、コマンドラインツールから下記を入力する。

> set global expire_logs_days = 30;

但し、いずれの場合も指定した日数経過後、最初にMySQLを再起動した場合、またはログファイルのローテーション時に削除が行われるので、多少のタイムラグがあることに注意する事。

Share this post