

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

# 使用 GTID 複寫交易
<a name="mysql-stored-proc-gtid"></a>

下列預存程序控制如何使用全域交易識別符 (GTID) 搭配 Aurora MySQL 複寫交易。如要了解透過 Aurora MySQL 使用以 GTID 為基礎的複寫使用方式，請參閱 [使用 GTID 式複寫](mysql-replication-gtid.md)。

**Topics**
+ [mysql.rds\$1assign\$1gtids\$1to\$1anonymous\$1transactions (Aurora MySQL 第 3 版)](#mysql_assign_gtids_to_anonymous_transactions)
+ [mysql.rds\$1gtid\$1purged (Aurora MySQL 3 版)](#mysql_rds_gtid_purged)
+ [mysql.rds\$1skip\$1transaction\$1with\$1gtid(Aurora MySQL 第 2 版和第 3 版）](#mysql_rds_skip_transaction_with_gtid)
+ [mysql.rds\$1start\$1replication\$1until\$1gtid(Aurora MySQL 第 3 版）](#mysql_rds_start_replication_until_gtid)

## mysql.rds\$1assign\$1gtids\$1to\$1anonymous\$1transactions (Aurora MySQL 第 3 版)
<a name="mysql_assign_gtids_to_anonymous_transactions"></a>

配置 `CHANGE REPLICATION SOURCE TO` 陳述式的 `ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS` 選項。它會使複寫通道將 GTID 指派給沒有 GTID 的複寫交易。如此一來，您就可以將二進位日誌從不使用 GTID 型複寫的來源複寫到使用該複寫的複本。如需詳細資訊，請參閱《MySQL 參考手冊》**中的 [CHANGE REPLICATION SOURCE TO 陳述式](https://dev.mysql.com/doc/refman/8.0/en/change-replication-source-to.html)和[從沒有 GTID 的來源複寫到具有 GTID 的複本](https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-assign-anon.html)。

### 語法
<a name="mysql_assign_gtids_to_anonymous_transactions-syntax"></a>

```
CALL mysql.rds_assign_gtids_to_anonymous_transactions(gtid_option);
```

### Parameters
<a name="mysql_assign_gtids_to_anonymous_transactions-parameters"></a>

 *gtid\$1option*  
字串值。允許的值為 `OFF`、`LOCAL` 或指定的 UUID。

### 使用須知
<a name="mysql_assign_gtids_to_anonymous_transactions-usage-notes"></a>

此程序的效果與在社群 MySQL 中發出陳述式 `CHANGE REPLICATION SOURCE TO ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = gtid_option` 相同。

 GTID 必須轉換為 `ON`，*gtid\$1option* 才能設定為 `LOCAL` 或特定的 UUID。

預設為 `OFF`，表示不使用該功能。

`LOCAL` 會指派 GTID，其中包含複本自己的 UUID (`server_uuid` 設定)。

傳遞的參數是 UUID，則會指派一個 UUID，其中包含指定的 GTID，例如複寫來源伺服器的 `server_uuid` 設定。

### 範例
<a name="mysql_assign_gtids_to_anonymous_transactions-examples"></a>

若要關閉此功能：

```
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('OFF');
+-------------------------------------------------------------+
| Message  |
+-------------------------------------------------------------+
| ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: OFF |
+-------------------------------------------------------------+
1 row in set (0.07 sec)
```

若要使用複本自己的 UUID：

```
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('LOCAL');
+---------------------------------------------------------------+
| Message  |
+---------------------------------------------------------------+
| ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: LOCAL |
+---------------------------------------------------------------+
1 row in set (0.07 sec)
```

若要使用指定的 UUID：

```
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('317a4760-f3dd-3b74-8e45-0615ed29de0e');
+----------------------------------------------------------------------------------------------+
| Message |
+----------------------------------------------------------------------------------------------+
| ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: 317a4760-f3dd-3b74-8e45-0615ed29de0e |
+----------------------------------------------------------------------------------------------+
1 row in set (0.07 sec)
```

## mysql.rds\$1gtid\$1purged (Aurora MySQL 3 版)
<a name="mysql_rds_gtid_purged"></a>



將系統變數 `gtid_purged` 的全域值設定為特定全域交易識別碼 (GTID) 設定。`gtid_purged` 系統變數是一個 GTID 集，由伺服器上已提交但不存在於伺服器上的任何二進位日誌檔中的所有 GTID 交易組成。

為了與 MySQL 8.0 相容，有兩種方法可以設定 `gtid_purged` 的值：
+ 將 `gtid_purged` 的值取代為指定的 GTID 設定。
+ 將指定的 GTID 集附加至已包含 `gtid_purged` 的 GTID 設定。

### 語法
<a name="mysql_rds_gtid_purged-syntax"></a>

若要使用指定的 GTID 設定取代 `gtid_purged` 的值：

```
CALL mysql.rds_gtid_purged (gtid_set);
```

若要將指定的 GTID 設定附加至 `gtid_purged` 的值：

```
CALL mysql.rds_gtid_purged (+gtid_set);
```

### Parameters
<a name="mysql_rds_gtid_purged-parameters"></a>

*gtid\$1set*  
*gtid\$1set* 的值必須是目前 `gtid_purged` 值的超集，且不能與 `gtid_subtract(gtid_executed,gtid_purged)` 相交。也就是說，新的 GTID 集必須包含已在 `gtid_purged` 中的任何 GTID，並且不能在 `gtid_executed` 中包含任何 GTID 尚未清除的項目。*gtid\$1set* 參數也不能包含全域中的任何 GTID `gtid_owned` 設定，目前正在伺服器上處理交易的 GTID。

### 使用須知
<a name="mysql_rds_gtid_purged-usage-notes"></a>

主要使用者必須執行 `mysql.rds_gtid_purged` 程序。

Aurora MySQL 3.04 版及更新版本支援此程序。

### 範例
<a name="mysql_rds_gtid_purged-examples"></a>

下列範例會指派 GTID `3E11FA47-71CA-11E1-9E33-C80AA9429562:23` 到 `gtid_purged` 全域變數。

```
CALL mysql.rds_gtid_purged('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
```

## mysql.rds\$1skip\$1transaction\$1with\$1gtid(Aurora MySQL 第 2 版和第 3 版）
<a name="mysql_rds_skip_transaction_with_gtid"></a>

略過 Aurora 主要執行個體上具有指定全域交易識別碼 (GTID) 之交易的複寫。

若已知特定 GTID 交易導致錯誤，可以使用此程序進行災難復原。使用此預存程序來略過有問題的交易。有問題的交易範例包括停用複寫、刪除重要資料或導致資料庫執行個體無法使用的交易。

### 語法
<a name="mysql_rds_skip_transaction_with_gtid-syntax"></a>

 

```
CALL mysql.rds_skip_transaction_with_gtid (
gtid_to_skip
);
```

### Parameters
<a name="mysql_rds_skip_transaction_with_gtid-parameters"></a>

 *gtid\$1to\$1skip*   
要略過的複寫交易的 GTID。

### 使用須知
<a name="mysql_rds_skip_transaction_with_gtid-usage-notes"></a>

主要使用者必須執行 `mysql.rds_skip_transaction_with_gtid` 程序。

Aurora MySQL 第 2 版和第 3 版支援此程序。

### 範例
<a name="mysql_rds_skip_transaction_with_gtid-examples"></a>

下列範例會略過使用 GTID `3E11FA47-71CA-11E1-9E33-C80AA9429562:23` 進行交易的複寫。

```
CALL mysql.rds_skip_transaction_with_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
```

## mysql.rds\$1start\$1replication\$1until\$1gtid(Aurora MySQL 第 3 版）
<a name="mysql_rds_start_replication_until_gtid"></a>

從 Aurora MySQL 資料庫叢集啟動複寫，並在指定的全域交易識別碼 (GTID) 之後立即停止複寫。

### 語法
<a name="mysql_rds_start_replication_until_gtid-syntax"></a>

 

```
CALL mysql.rds_start_replication_until_gtid(gtid);
```

### Parameters
<a name="mysql_rds_start_replication_until_gtid-parameters"></a>

 *gtid*   
在此 GTID 後停止複寫。

### 使用須知
<a name="mysql_rds_start_replication_until_gtid-usage-notes"></a>

主要使用者必須執行 `mysql.rds_start_replication_until_gtid` 程序。

Aurora MySQL 3.04 版及更新版本支援此程序。

受管複寫不支援 `mysql.rds_start_replication_until_gtid` 預存程序，其中包括下列項目：
+ [跨 AWS 區域 複寫 Amazon Aurora MySQL 資料庫叢集](AuroraMySQL.Replication.CrossRegion.md)
+ [使用 Aurora 讀取複本，從 RDS for MySQL 資料庫執行個體將資料遷移至 Amazon Aurora MySQL 資料庫叢集](AuroraMySQL.Migrating.RDSMySQL.Replica.md)

當 `gtid` 參數指定了複本已經執行的交易時，複寫會立即停止。

### 範例
<a name="mysql_rds_start_replication_until_gtid-examples"></a>

以下範例會啟動複寫並複寫變更，直到達到 GTID `3E11FA47-71CA-11E1-9E33-C80AA9429562:23` 為止。

```
call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
```