TL;DR
- バイナリーログの自動パージ期間を設定する expire_logs_days はMySQL 8.0では非推奨
- 代わりに binlog_expire_logs_seconds を設定する
MySQL 8.0.1 で導入された binlog_expire_logs_seconds 当初は expire_logs_days と 足し合わせる という互換性に考慮した 結果余計ややこしい ユニークな設定方法になっていたのですが、 MySQL 8.0.4 で
- binlog_expire_logs_secondsが設定されいてる場合はbinlog_expire_logs_secondsのみ適用、expire_logs_daysは無視される
- binlog_expire_logs_secondsが未設定または0の時のみexpire_logs_daysが適用される
に変わっていた。
一緒に指定しようとするとこんなワーニングになる。
2018-04-16T04:37:43.284839Z 0 [Warning] [MY-011079] The option expire_logs_days cannot be used together with option binlog_expire_logs_seconds. Therefore, value of expire_logs_days is ignored.
ところで、MySQL 8.0.11で binlog_expire_logs_seconds のデフォルトが2592000(30日)に変わるらしいんだけど、この場合binlog_expire_logs_secondsが未設定だとこの値が適用されそうだから、明示的に
binlog_expire_logs_seconds=0
にした時だけ expire_logs_days
の評価に入るのかしらん、という感じ。
ちなみにMySQL 8.0.4現在では、
binlog_expire_logs_seconds
と expire_logs_days
は特に連動していない( expire_logs_days
の値が有効になっている状態でも binlog_expire_logs_seconds
に反映してくれたりはしない)。
飽くまで「どちらか片方だけが設定されているていで、バイナリーログがパージされる関数の中で計算する」だけだった。
というわけで、MySQL 8.0向けの秘伝のタレは
expire_logs_days
を binlog_expire_logs_seconds
に書き換えておきましょう。expire_logs_seconds
って書いて「そんなパラメーター知らん」って言われる- 値を変えるときに 日 -> 秒への変換を忘れてバイナリーログがあっという間にパージされている
くらいでしょうか。お気を付けください。
0 件のコメント :
コメントを投稿