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