

# GTID を使用したトランザクションのレプリケーション
<a name="mysql-stored-proc-gtid"></a>

以下のストアドプロシージャは、Aurora MySQL でグローバルトランザクション識別子 (GTID) を使用してトランザクションをレプリケートする方法を制御します。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>

を設定します。`ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS`のオプション`CHANGE REPLICATION SOURCE TO`表示されます。これにより、レプリケーションチャネルが GTID を持たないレプリケートされたトランザクションに割り当てられます。このように、GTID ベースのレプリケーションを使用しないソースから、使用するレプリカに対してバイナリログレプリケーションを実行できます。詳細については、「[CHANGE REPLICATION SOURCE TO Statement」を参照してください。](https://dev.mysql.com/doc/refman/8.0/en/change-replication-source-to.html)そして[GTIDs のないソースから GTIDs を使用したレプリカへのレプリケーション](https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-assign-anon.html)の*MySQL リファレンスマニュアル*を参照してください。

### 構文
<a name="mysql_assign_gtids_to_anonymous_transactions-syntax"></a>

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

### パラメータ
<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`レプリカ独自の UUID を含む GTID を割り当てます (`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` の値を設定する方法が 2 つあります。
+ `gtid_purged` の値を、指定した GTID セットに置き換えます。
+ 指定した GTID セットを `gtid_purged` が既に含んでいる GTID セットに追加します。

### 構文
<a name="mysql_rds_gtid_purged-syntax"></a>

`gtid_purged` の値を、指定した GTID セットに置き換えるには

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

`gtid_purged` の値を、指定した GTID セットに追加するには

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

### パラメータ
<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_owned` セットにある GTID、サーバー上で現在処理中のトランザクションの 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 トランザクションが問題の原因となることが知られている場合、障害復旧のためにこのプロシージャを使用できます。このストアドプロシージャを使用して、問題となるトランザクションをスキップします。問題のあるトランザクションの例には、レプリケーションを無効にしたり、重要なデータを削除したり、DB インスタンスを利用不可にするトランザクションが含まれます。

### 構文
<a name="mysql_rds_skip_transaction_with_gtid-syntax"></a>

 

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

### パラメータ
<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 DB クラスターからのレプリケーションを開始し、指定したグローバルトランザクション識別子 (GTID) の後でレプリケーションを停止します。

### 構文
<a name="mysql_rds_start_replication_until_gtid-syntax"></a>

 

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

### パラメータ
<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 DB クラスターのレプリケーション](AuroraMySQL.Replication.CrossRegion.md)
+ [Aurora リードレプリカを使用した、RDS for MySQL DB インスタンスから Amazon Aurora MySQL DB クラスターへのデータの移行](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');
```