本節說明使用全域交易識別碼 (GTID) 的交易型複製。當使用 GTID 時,每個交易都可以在原始伺服器上提交並由任何副本應用時識別和追蹤;這表示當使用 GTID 時,在啟動新的副本或容錯移轉到新的來源時,不需要參照日誌檔案或這些檔案中的位置,這大大簡化了這些任務。由於基於 GTID 的複製完全是基於交易的,因此很容易判斷來源和副本是否一致;只要來源上提交的所有交易也都提交到副本上,就可以保證兩者之間的一致性。您可以使用基於陳述式或基於資料列的複製以及 GTID (請參閱章節 19.2.1,「複製格式」);但是,為了獲得最佳結果,我們建議您使用基於資料列的格式。
GTID 在來源和複本之間始終會被保留。這表示您可以隨時透過檢查二進位日誌來確定任何複本上所套用的交易的來源。此外,一旦具有指定 GTID 的交易在給定伺服器上提交,則該伺服器會忽略任何後續具有相同 GTID 的交易。因此,在來源上提交的交易在複本上最多只能套用一次,這有助於確保一致性。
本節討論以下主題
GTID 如何定義和建立,以及它們在 MySQL 伺服器中的表示方式(請參閱第 19.1.3.1 節,「GTID 格式與儲存」)。
GTID 的生命週期(請參閱第 19.1.3.2 節,「GTID 生命週期」)。
用於同步使用 GTID 的複本和來源的自動定位功能(請參閱第 19.1.3.3 節,「GTID 自動定位」)。
設定和啟動基於 GTID 的複寫的一般程序(請參閱第 19.1.3.4 節,「使用 GTID 設定複寫」)。
使用 GTID 時,用於佈建新複寫伺服器的建議方法(請參閱第 19.1.3.5 節,「使用 GTID 進行故障轉移和擴充」)。
使用基於 GTID 的複寫時,您應該注意的限制和約束(請參閱第 19.1.3.7 節,「使用 GTID 進行複寫的限制」)。
您可以用來處理 GTID 的儲存函數(請參閱第 19.1.3.8 節,「操作 GTID 的儲存函數範例」)。
有關與基於 GTID 的複寫相關的 MySQL 伺服器選項和變數的資訊,請參閱第 19.1.6.5 節,「全域交易 ID 系統變數」。另請參閱第 14.18.2 節,「與全域交易識別碼 (GTID) 一起使用的函數」,其中描述了 MySQL 8.4 支援的與 GTID 一起使用的 SQL 函數。