
MySQL の Binlog ファイルの数は日々増加しており、そのサイズはギガバイト単位で増加しています。 増加している Binlog ファイルのサイズを止めるにはどうしたらよいでしょうか? Binlog ファイルによってディスク領域がいっぱいになっています。
答え1
MySQL8 では、バイナリ ログがデフォルトで有効になっており、バイナリ ログのデフォルトのパージ (有効期限/削除) は 30 日に設定されています。
SSHとmysqlにログインしたら、以下のコマンドを使用できます。
バイナリログを表示するには
mysql> SHOW BINARY LOGS;
ある時点までバイナリログを手動で消去するには
mysql> PURGE BINARY LOGS TO 'binlog.000142';
自動デフォルトパージの有効期限を 30 日 (デフォルト) から 3 日に変更します
mysql> SET GLOBAL binlog_expire_logs_seconds = 259200;
Query OK, 0 rows affected (0.00 sec)
mysql> SET PERSIST binlog_expire_logs_seconds = 259200;
Query OK, 0 rows affected (0.01 sec)
上記の値は秒単位です。つまり、3日を秒単位で表すと、(60秒×60分×24時間×3日)=259200となります。
答え2
これらのバイナリ ログを保持する必要がない場合は、次のように MySQL 内でそれらを「トリミング」できます。
mysql> PURGE BINARY LOGS BEFORE '2021-01-01 00:00:00';
もちろん、日付はいつでも変更できます。特定のバイナリ ログ ファイルにトリミングしたい場合は、次のようにします。
mysql> PURGE BINARY LOGS TO 'mysql-bin.12345';
トリミングする実際のファイルを必ず指定してください。
重要:ファイルシステムからファイルを削除しないでください。MySQLは将来、ひどい形で文句を言うでしょう。不要なダウンタイムを避けるために、 PURGE BINARY LOGS
MySQL 内からコマンドを実行します。
答え3
バイナリログは、レプリケーションと特定の形式のバックアップに必要です。どちらも実行していないようです。
設定を変更するには、次のような新しいファイルを追加します (「rj」は私のイニシャルです)。
/etc/mysql/mysql.conf.d/rj.cnf
以下のようにオーバーライドを追加します。変更を加えた後、
sudo systemctl restart mysql
log_bin
binlog の作成を制御します。
削除されたままにするには、binlog_expire_logs_seconds = 86400
(または他の数字) を追加します。
別の設定では、各 binlog ファイルの最大サイズを制御します。これは、最後のファイルが「期限切れ」になるまで残ることを除いて、使用されるディスク容量の合計には影響しません。再起動 (または mysql の再起動) のたびに新しい binlog が開始されるため、小さなファイルが多数表示されることがあります。
したがって、私の rj.cnf ファイルには次のような内容が含まれる可能性があります。
# Added by Rick James
[mysqld]
log_bin = # turn off
binlog_expire_logs_seconds = 86400 # 1 day
max_binlog_size = 104857600 # 100M
答え4
利用可能なスクリプトを使用できます https://github.com/Thibs/monitor_mysql_binary_logging/blob/main/monitor_mysql_binary_logging.sh
バイナリログファイルのサイズ/数を管理する