PURGE { BINARY | MASTER } LOGS { TO 'log_name
' | BEFOREdatetime_expr
}
バイナリログは、MySQL サーバーによって行われたデータ変更に関する情報を含む一連のファイルです。このログは、一連のバイナリログファイルと 1 つのインデックスファイルで構成されています。
PURGE BINARY
LOGS
ステートメントは、指定されたログファイル名または日付の前にあるログインデックスファイルにリストされているすべてのバイナリログファイルを削除します。
これらのログファイルはまた、特定のログファイルが先頭になるように、インデックスファイルに記録されているリストからも削除されます。
このステートメントは、--log-bin
オプションが有効になっていない場合は影響を与えません。
例:
PURGE BINARY LOGS TO 'mysql-bin.010'; PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';
BEFORE
バリアントの
datetime_expr
引数は、DATETIME
値 ('YYYY-MM-DD hh:mm:ss'
形式の値)
に評価されます。BINARY
と MASTER
は同義語です。
このステートメントは、スレーブが複製中に起動しても安全です。それらを停止させる必要はありません。現在削除しようとしているログの 1 つを読み込んでいる、アクティブスレーブを持っていれば、このステートメントは何もせず、エラーで失敗します。しかし、もしスレーブが休止状態で、まだ読み込まれていないログの 1 つを消去してしまったら、そのスレーブはその後複製が不可能になります。
ログを安全に消去するには、次の手順に従ってください。
各スレーブサーバー上で、どのログがそれを読み込んでいるのか確認するために
SHOW SLAVE
STATUS
を利用してください。
SHOW BINARY
LOGS
を利用してマスタサーバー上でバイナリログのリストを手に入れてください。
すべてのスレーブの中で一番最初のログを確認してください。これがターゲットログです。もしすべてのスレーブが最新であれば、これがリスト上の最後のログになります。
削除しようとしているすべてのログのバックアップを作成してください。(このステップは任意ですが、常に推奨されているものです)。
ターゲットログを含まず、そこまでのすべてのログを消去してください。
指定した日数後に
(Server System Variables を参照)
バイナリログを自動的に無効にする
expire_logs_days
システム変数も設定できます。もしレプリケーションを利用しているなら、ご利用のスレーブがマスタよりも遅れるであろう最大日数よりも低く変数を設定しなければいけません。
MySQL 5.1.24
より前のバージョンでは、.index
ファイルにリストされているバイナリログファイルがほかの何らかの手段によって
(たとえば、Linux 上の rm を使用して)
システムから削除された場合、PURGE
BINARY LOGS TO
と PURGE
BINARY LOGS BEFORE
は同じように動作しませんでした
(どちらも正しく動作しませんでした)。MySQL
5.1.24
からは、このような場合、このステートメントの両方のバリアントがエラーで失敗します。(Bug#18199、Bug#18453)
このようなエラーは、.index
ファイル (単純なテキストファイル)
を手動で編集して、実際に存在するバイナリログファイルのみがリストされるようにしたあと、失敗した
PURGE BINARY
LOGS
ステートメントをもう一度実行することによって対処できます。