MySQLはデフォルトの状態ではバイナリログを30日間保持する設定になっており、 ディスクを圧迫する要因となる場合がある。 そのため、バイナリログの保持期間を設定したり削除したりする必要がある。
対象のデータベースにログインする
mysql -u <username> -p <database>
保持期間を確認するにはbinlog_expire_logs_seconds を確認する。
mysql> SHOW global VARIABLES LIKE 'binlog_expire_logs_seconds'; +----------------------------+---------+ | Variable_name | VALUE | +----------------------------+---------+ | binlog_expire_logs_seconds | 2592000 | +----------------------------+---------+ 1 ROW IN SET (0.00 sec)
現在保存されているバイナリログを確認するには以下を実行する
SHOW BINARY logs;
秒数で指定する必要がある。7日にする場合は $3600*24*7=604800$を設定する。
mysql> SET global binlog_expire_logs_seconds = 604800;
expire_logs_days パラメータと binlog_expire_logs_seconds は同時に設定できない。 両方設定されている場合はbinlog_expire_logs_seconds が優先される。
構文
qurge [master|binary] logs [to 'log_name' | before <datetime_expire>]
900番以前のログを削除するには
purge BINARY logs TO 'binlog.000900';