weblog of key_amb

主にIT関連の技術メモ

MySQL binlogの削除

PURGE MASTER LOGS構文を使う。
以下の手順でやればよい。

手順

1. どこまでbinlogを削除していいか調べる。

Slave側でSHOW SLAVE STATUSを実行する。Master_Log_Fileが現在参照中のbinlog。

mysql > SHOW SLAVE STATUS;
:
Master_Log_File: mysql00-bin.000010
:

ちなみに、Master側でSHOW MASTER STATUSを実行すると、Masterのbinlog情報が取得できる。

mysql > SHOW MASTER STATUS;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mysql00-bin.000010 | 65746708 |              | mysql            |
+--------------------+----------+--------------+------------------+
2. 削除

Master側でSHOW MASTER LOGSを実行すると、binlogの一覧が表示される。レプリケーションが遅れていなければ、最後のbinlogと1.で確認したbinlogは一致するはず。

mysql> SHOW MASTER LOGS;
+--------------------+------------+
| Log_name           | File_size  |
+--------------------+------------+
| mysql00-bin.000001 | 1074149684 |
| mysql00-bin.000002 | 1073741963 |
:
| mysql00-bin.000010 |   65746708 |
+--------------------+------------+

mysql00-bin.000010より前のbinlogを削除するには、以下のようにする。

mysql> PURGE MASTER LOGS TO 'mysql00-bin.000010';