このセクションでは、MySQL 5.6.5 で導入された、グローバルトランザクション識別子 (GTID) を使用したトランザクションベースレプリケーションについて説明します。GTID を使用することで、各トランザクションが発生元サーバーでコミットされて、スレーブによって適用されたあとに、それを特定して追跡できます。これは、GTID を使用することで、新しいスレーブを起動するとき、または新しいマスターにフェイルオーバーするときに、ログファイルまたはそれらのファイル内での位置を参照する必要がなくなり、これらのタスクが大幅に簡易化されることを意味します。GTID ベースレプリケーションが完全にトランザクションベースであるため、マスターとスレーブが一貫しているかどうかを判断することが容易です。マスターでコミットされたすべてのトランザクションがスレーブでもコミットされているかぎり、両者の一貫性は保証されます。ステートメントベースまたは行ベースレプリケーションを GTID に基づいて使用できます (セクション17.1.2「レプリケーション形式」を参照してください)。ただし、最善の結果を得るには、行ベース形式を使用することをお勧めします。
このセクションでは、次のトピックについて説明します。
GTID がどのように定義および作成され、それらが MySQL Server 内でどのように表現されるか (セクション17.1.3.1「GTID の概念」を参照してください)。
GTID ベースレプリケーションをセットアップおよび起動するための一般的な手順 (セクション17.1.3.2「GTID を使用したレプリケーションのセットアップ」を参照してください)。
GTID を使用するときに新しいレプリケーションサーバーをプロビジョニングするために推奨される方法 (セクション17.1.3.3「フェイルオーバーおよびスケールアウトでの GTID の使用」を参照してください)。
GTID ベースレプリケーションを使用するときに留意すべき制約と制限 (セクション17.1.3.4「GTID ベースレプリケーションの制約」を参照してください)。
GTID ベースレプリケーションに関係する MySQL Server オプションおよび変数については、セクション17.1.4.5「グローバルトランザクション ID のオプションと変数」を参照してください。GTID と一緒に使用するために MySQL 5.6 がサポートする SQL 関数については、セクション12.16「グローバルトランザクション ID とともに使用される関数」も参照してください。
GTID は、MySQL Cluster が使用する NDB
ストレージエンジンと互換性がなく、サポートされません。MySQL Cluster で GTID を有効にすると、NDB
の問題が発生し、MySQL Cluster レプリケーションも失敗する可能性が非常に高くなります。