

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

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

**注記**  
Aurora では、この機能は、外部 MySQL データベースとの間で binlog レプリケーションを使用する Aurora MySQL クラスターでのみ使用できます。もう一方のデータベースは、Amazon RDS MySQL インスタンス、オンプレミス MySQL データベース、または別の AWS リージョン にある Aurora DB クラスターです。その種類のレプリケーションを設定する方法については、「[Aurora と MySQL との間、または Aurora と別の Aurora DB クラスターとの間のレプリケーション (バイナリログレプリケーション)](AuroraMySQL.Replication.MySQL.md)」を参照してください。

binlog レプリケーションを使用する際に MySQL での GTID ベースのレプリケーションに慣れていない場合は、MySQL ドキュメントの「[Replication with global transaction identifiers](https://dev.mysql.com/doc/refman/5.7/en/replication-gtids.html)」を参照してください。

GTID ベースのレプリケーションは、Aurora MySQL バージョン 2 および 3 でサポートされています。

**Topics**
+ [グローバルトランザクション ID (GTID) の概要](#mysql-replication-gtid.overview)
+ [GTID ベースレプリケーションのパラメータ](#mysql-replication-gtid.parameters)
+ [Aurora MySQL クラスターの GTID ベースのレプリケーションを有効にする](mysql-replication-gtid.configuring-aurora.md)
+ [Aurora MySQL DB クラスターの GTID ベースレプリケーションを無効にする](mysql-replication-gtid.disabling.md)

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

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

**注記**  
Aurora がクラスター内の DB インスタンス間でデータを同期する場合、そのレプリケーションメカニズムにバイナリログ (binlog) は含まれません。Aurora MySQL では、GTID ベースのレプリケーションは、binlog レプリケーションも使用して外部の MySQL 互換データベースから Aurora MySQL DB クラスター間でレプリケートする場合にのみ適用されます。

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

レプリケーション設定では、GTID はすべての DB インスタンスで一意です。GTID を使用すると、ログファイルの位置を参照する必要がないため、GTID はレプリケーション設定を簡素化します。GTID はまた、レプリケートされたトランザクションを追跡し、出典インスタンスとレプリカが一致しているかどうかの判断を容易にします。

 外部の MySQL 互換データベースから Aurora クラスターにレプリケートする場合は通常、GTID ベースのレプリケーションを Aurora と共に使用します。このレプリケーション設定は、オンプレミスまたは Amazon RDS データベースから Aurora MySQL への移行の一環として行うことができます。外部データベースで既に GTID が使用されている場合に、Aurora クラスターに対して GTID ベースのレプリケーションを有効にすると、レプリケーションプロセスが簡単になります。

 Aurora MySQL クラスター用に GTID ベースのレプリケーションを設定するには、まず DB クラスターパラメータグループの関連設定パラメータを設定します。その後、そのパラメータグループとクラスターを関連付けます。

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

**ヒント**  
受信レプリケーションは、Aurora MySQL クラスターの最も一般的な binlog レプリケーションのシナリオです。受信レプリケーションでは、GTID モードを `OFF_PERMISSIVE` に設定することをお勧めします。この設定では、レプリケーション出典の GTID 設定に関係なく、外部データベースからの受信レプリケーションが可能になります。

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