バイナリログ出力を設定していると、日々変更ログが蓄積していきますが、一定期間分だけ保存するように設定しておかないと無尽蔵に増加してしまいます。
これを制御するパラメータが expire_logs_days になります。
このパラメータに何も指定してないとデフォルト値の 0 になっており、永久に保存されますが、整数値を指定すると、その日数の分だけ保管され、
それより過去のデータは自動的に削除されるようになります。
例: expire_logs_days が 7 だと7日間分のバイナリログだけ保存される
expire_logs_days はマニュアルを見ると「Dynamic Variable: Yes」とあるので
オンライン(起動中)でも変更可能なようなので、試してみます。
# mysql Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 4 Server version: 5.1.46-log MySQL Community Server (GPL) by Remi Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> SHOW GLOBAL VARIABLES like 'expire_logs_days'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | expire_logs_days | 14 | +------------------+-------+ 1 row in set (0.00 sec) mysql> SET GLOBAL expire_logs_days = 7; Query OK, 0 rows affected (0.00 sec) mysql> SHOW GLOBAL VARIABLES like 'expire_logs_days'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | expire_logs_days | 7 | +------------------+-------+ 1 row in set (0.00 sec) mysql>
上記のように、保存期間を14日から7日に変更することができました。
バイナリログのローテーションタイミングは再起動時かログ最大サイズ(max_binlog_size)を超えたときのどちらかに限定されるため、すぐにログファイルの削除はされませんが時間をおいて確認するようにします。
尚、再起動時にも反映されるように my.cnf ファイルの変更もしておきます。