在 MySQL 8 中,二進位日誌會自動清除(如 binlog_expire_logs_seconds
所定義)。這表示,執行時間長於 binlog_expire_logs_seconds
的叢集,最終可能不會包含具有完整二進位日誌的執行個體,其中包含執行個體所套用的所有交易。這可能會導致執行個體需要自動佈建,例如使用 MySQL Enterprise Backup,才能加入叢集。執行 8.0.17 及更新版本的執行個體支援 MySQL Clone 外掛程式,透過提供不依賴增量復原的自動佈建解決方案來解決此問題,請參閱第 7.4.6 節「將 MySQL Clone 與 InnoDB Cluster 搭配使用」。執行早於 8.0.17 版本的執行個體僅支援增量復原,結果是,根據執行個體執行的 MySQL 版本,執行個體可能必須自動佈建。否則,依賴分散式復原的操作(例如
等)可能會失敗。Cluster
.addInstance()
在執行較早版本 MySQL 的執行個體上,以下規則用於二進位日誌清除
執行早於 8.0.1 版本的執行個體沒有自動二進位日誌清除,因為
expire_logs_days
的預設值為 0。執行晚於 8.0.1 但早於 8.0.4 版本的執行個體會在 30 天後清除二進位日誌,因為
expire_logs_days
的預設值為 30。執行晚於 8.0.10 版本的執行個體會在 30 天後清除二進位日誌,因為
binlog_expire_logs_seconds
的預設值為 2592000,而expire_logs_days
的預設值為 0。
expire_logs_days
已在 MySQL Server 8.2.0 中移除。
因此,根據叢集的執行時間長短,二進位日誌可能已清除,您可能必須手動佈建執行個體。同樣地,如果您手動清除了二進位日誌,也可能會遇到相同的情況。因此,強烈建議您升級到晚於 8.0.17 的 MySQL 版本,以充分利用 MySQL Clone 提供的自動佈建進行分散式復原,並在為 InnoDB Cluster 佈建執行個體時盡量減少停機時間。