

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 GTID 式複寫
<a name="mysql-replication-gtid"></a>

接下來，您可以了解如何在 Amazon RDS for MySQL 資料庫執行個體間 搭配使用全域交易識別符 (GTID) 與二進位日誌 (binlog) 複寫。

如果您是使用 binlog 複寫，且不熟悉如何在 MySQL 使用 GTID 式複寫，則可參閱 MySQL 文件中的[使用全域交易識別符的複寫](https://dev.mysql.com/doc/refman/5.7/en/replication-gtids.html)。

下列版本支援 GTID 式複寫：
+ 所有 RDS for MySQL 8.4 版本
+ 所有 RDS for MySQL 8.0 版本
+ 所有 RDS for MySQL 5.7 版本

複寫組態中的所有 MySQL 資料庫執行個體都必須符合此版本要求。

**Topics**
+ [全域交易識別碼 (GTID) 的概觀](#mysql-replication-gtid.overview)
+ [GTID 式複寫的參數](#mysql-replication-gtid.parameters)
+ [為 RDS for MySQL 的新僅供讀取複本啟用 GTID 式複寫](mysql-replication-gtid.configuring-new-read-replicas.md)
+ [為 RDS for MySQL 的現有僅供讀取複本啟用 GTID 式複寫](mysql-replication-gtid.configuring-existing-read-replicas.md)
+ [為具備僅供讀取複本的 MySQL 資料庫執行個體停用 GTID 式複寫](mysql-replication-gtid.disabling.md)

## 全域交易識別碼 (GTID) 的概觀
<a name="mysql-replication-gtid.overview"></a>

「全域交易識別符 (GTID)」**是系統為遞交的 MySQL 交易所產生的唯一識別符。GTID 能讓 binlog 複寫的操作更簡單，也更容易進行故障診斷。

進行 binlog 複寫作業時，MySQL 會使用兩種不同類型的交易：
+ GTID 交易** – 透過 GTID 識別的交易。
+ 匿名交易** – 未指派 GTID 的交易。

在複寫組態中，全部的資料庫執行個體都有各自不同的 GTID。GTID 可簡化複寫組態，因為使用時不需要參照日誌檔案位置。GTID 也使得追蹤複寫的交易更容易，而且可決定來源執行個體和複本是否一致。

您可使用 GTID 式複寫來複寫 RDS for MySQL 僅供讀取複本的資料。您可在建立新的僅供讀取複本時設定 GTID 式複寫，也可轉換現有的僅供讀取複本以使用 GTID 式複寫。

如果是 RDS for MySQL，您也可以在延遲的複寫組態中使用 GTID 式複寫。如需詳細資訊，請參閱[透過 MySQL 設定延遲複寫](USER_MySQL.Replication.ReadReplicas.DelayReplication.md)。

## GTID 式複寫的參數
<a name="mysql-replication-gtid.parameters"></a>

使用以下參數來設定 GTID 式複寫。


| 參數 | 有效值 | 描述 | 
| --- | --- | --- | 
|  `gtid_mode`  |  `OFF`, `OFF_PERMISSIVE`, `ON_PERMISSIVE`, `ON`  |  `OFF` 指定新交易是匿名交易 (也就是沒有 GTID)，而且交易必須是匿名交易才能複寫。 `OFF_PERMISSIVE` 指定新交易是匿名交易，但全部交易都可以複寫。 `ON_PERMISSIVE` 指定新交易是 GTID 交易，而且全部交易都可以複寫。 `ON` 指定新交易是 GTID 交易，而且交易必須是 GTID 交易才能複寫。  | 
|  `enforce_gtid_consistency`  |  `OFF`, `ON`, `WARN`  |  `OFF` 允許交易違反 GTID 一致性。 `ON` 可避免交易違反 GTID 一致性。 `WARN` 允許交易違反 GTID 一致性，但會在出現違反行為時產生警告。  | 

**注意**  
在 中 AWS 管理主控台， `gtid_mode` 參數會顯示為 `gtid-mode`。

進行 GTID 式複寫時，您可以使用下列設定來配置資料庫執行個體或僅供讀取複本的參數群組：
+ `ON` 和 `ON_PERMISSIVE` 僅適用於從 RDS 資料庫執行個體的傳出複寫作業。這兩個值都會導致 RDS 資料庫執行個體使用 GTID 以供複寫的交易使用。`ON` 要求目標資料庫也使用 GTID 式複寫。`ON_PERMISSIVE` 使 GTID 式複寫可在目標資料庫上選用。
+ 若設定 `OFF_PERMISSIVE`，表示 RDS 資料庫執行個體可接受來源資料庫的傳入複寫作業。無論來源資料庫是否使用 GTID 式複寫，皆可進行。
+ 若設定 `OFF`，表示唯有來源資料庫未使用 GTID 式複寫的情況下，RDS 資料庫執行個體才能接受來自該資料庫的傳入複寫作業。

如需參數群組的詳細資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。