MySQLのバイナリログを削除する

MySQLのバイナリログは放っておくと増えるだけで、ディスク容量の圧迫原因にもなります。

不要になったログは削除する運用が必要になります。

ここでは、実際にどうすればいいのかを整理しておきます。

なお、動作確認環境はCentOS 5.6上の MySQL 5.6.13 です。

1.手動で削除

mysqlプロンプトで下記のようにコマンドを実行します。 下記は、「2011年5月31日23:59:59までのバイナリログを削除する」ときのコマンドラインです。

mysql> purge master logs before ‘2011-05-31 23:59:59’; Query OK, 0 rows affected, 5 warnings (9.14 sec) 2.自動で削除

my.cnf に下記のパラメータを設定します。 下記は、「7日経ったバイナリログは削除する」という設定です。

expire-logs-days = 7

デフォルト値は 0 で、その場合は自動削除されません。 また、自動削除が実行されるタイミングは、mysqld の再起動時とログローテーションの実行時です。

MySQL 5.5.x のバイナリログの削除

MySQL 5.5.x におけるバイナリログは削除するなどしないと貯まる一方です。場合によっては、ディスク容量を圧迫する原因にもなりますので、古いものは削除する運用が必要になると思います。

ここでは、最も安全で確実な方法を説明します。

MySQL のオプションファイル my.cnf に下記のように expire-logs-days オプションを設定して、あとはMySQL自身に任せてしまう方法が最も便利です。

[mysqld] expire-logs-days = n

ここで、n はバイナリログの期限切れ日数です。デフォルト値は 0 (無期限)。

ただし、バックアップとの整合を取ることを忘れないでください。バイナリログは、バックアップリストア後のロールフォワードのために必要です。

なお、削除は次のタイミングで行われます。

MySQL の起動時 ログチェンジ(ローテーション)時