

# GTID ベースレプリケーションを使用する
<a name="mysql-replication-gtid"></a>

以下では、複数の Amazon RDS for MySQL DB インスタンス間において、バイナリログ (binlog) レプリケーションでグローバルトランザクション ID (GTID) を使用する方法について説明します。

binlog レプリケーションを使用する際に MySQL での GTID ベースのレプリケーションに慣れていない場合は、MySQL ドキュメントの「[Replication with global transaction identifiers](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 DB インスタンスがこのバージョン要件を満たしている必要があります。

**Topics**
+ [グローバルトランザクション ID (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 DB インスタンスの GTID ベースレプリケーションを無効にする](mysql-replication-gtid.disabling.md)

## グローバルトランザクション ID (GTID) の概要
<a name="mysql-replication-gtid.overview"></a>

*グローバルトランザクション ID (GTID)* はコミットされた MySQL トランザクションに対して生成される一意の ID です。GTID を使用することで、簡単に binlog をレプリケーションおよびトラブルシューティングできるようになります。

MySQL では、binlog レプリケーションに 2 種類のトランザクションを使用します。
+ *GTID トランザクション* - GTID によって識別されるトランザクション。
+ *匿名トランザクション* - GTID が割り当てられていないトランザクション。

レプリケーション設定では、GTID はすべての DB インスタンスで一意です。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 ベースレプリケーションを設定します。


| Parameter | 有効な値 | 説明 | 
| --- | --- | --- | 
|  `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 ベースのレプリケーションでは、DB インスタンスまたはリードレプリカのパラメータグループでこれらの設定を使用します。
+ `ON` と `ON_PERMISSIVE` は、RDS DB インスタンスからの送信レプリケーションにのみ適用されます。いずれの値でも、RDS DB インスタンスは、レプリケートされるトランザクションに GTID を使用します。`ON` の場合は、ターゲットデータベースも GTID ベースのレプリケーションを使用します。`ON_PERMISSIVE` の場合、GTID ベースのレプリケーションは、ターゲットデータベースではオプションになります。
+ `OFF_PERMISSIVE` が設定された場合、これは、RDS DB インスタンスがソースデータベースからの受信レプリケーションを受け入れることができることを意味します。これは、ソースデータベースで GTID ベースのレプリケーションが使用されているかどうかにかかわらず実行できます。
+ `OFF` が設定された場合、これは、RDS DB インスタンスが、GTID ベースのレプリケーションを使用しないソースデータベースからの受信レプリケーションのみを受け入れることができることを意味します。

パラメータグループの詳細については、「[Amazon RDS のパラメータグループ](USER_WorkingWithParamGroups.md)」を参照してください。