MySQL8系をインストールすると自動でバイナリログが出力されるようになります。
このバイナリログの保存日数を変更します。
バイナリログの保存日数は「binlog_expire_logs_seconds」で指定します。
mysql> show variables like 'binlog_expire_logs_seconds'; +----------------------------+---------+ | Variable_name | Value | +----------------------------+---------+ | binlog_expire_logs_seconds | 2592000 | +----------------------------+---------+ 1 row in set (0.00 sec)
デフォルトは30日(2592000秒)の設定となっています。
7日分に変更します。
mysql> SET GLOBAL binlog_expire_logs_seconds = 604800;
変更されたか確認をします。
mysql> show variables like 'binlog_expire_logs_seconds'; +----------------------------+--------+ | Variable_name | Value | +----------------------------+--------+ | binlog_expire_logs_seconds | 604800 | +----------------------------+--------+ 1 row in set (0.00 sec)
これでバイナリログの保存日数変更が完了しました。
ちなみに類似の「expire_logs_days」というパラメータもあります。
こちらはMySQL8では非推奨のパラメータとなっております。
「binlog_expire_logs_seconds」と両方パラメータを指定すると下記のようなエラーとなります。
ERROR 3683 (HY000): The option expire_logs_days and binlog_expire_logs_seconds cannot be used together. Please use binlog_expire_logs_seconds to set the expire time (expire_logs_days is deprecated)
今回JobArrangerでMySQL8.0を使っていたのですが原因不明なディスク容量圧迫が発生しました。
調べてみるとバイナリログがディスクを大きく使用していたようでした。
アクセス頻度の多いMySQLを導入するときにはこの設定は注意した方がよさそうです。