このセクションでは、グローバルトランザクション識別子 (GTID) を使用したトランザクションベースのレプリケーションについて説明します。 GTID を使用している場合、各トランザクションは元のサーバーでコミットされ、レプリカによって適用されるため、識別および追跡できます。つまり、GTID を使用して新しいレプリカの起動時または新しいソースへのフェイルオーバー時に、それらのファイル内のログファイルまたは位置を参照する場合は必要ありません。これにより、これらのタスクが大幅に簡略化されます。 GTID ベースのレプリケーションは完全にトランザクションベースであるため、ソースとレプリカに一貫性があるかどうかを簡単に判断できます。ソースでコミットされたすべてのトランザクションもレプリカでコミットされているかぎり、両者の間の一貫性が保証されます。 ステートメントベースまたは行ベースレプリケーションを GTID に基づいて使用できます (セクション17.2.1「レプリケーション形式」を参照してください)。ただし、最善の結果を得るには、行ベース形式を使用することをお勧めします。
GTID は常にソースとレプリカの間で保持されます。 つまり、バイナリログを調べることによって、レプリカに適用されているトランザクションのソースをいつでも判別できます。 また、ある GTID のトランザクションがあるサーバーでコミットされると、同じ GTID のそれ以降のトランザクションはそのサーバーで無視されます。 したがって、ソースでコミットされたトランザクションはレプリカに複数回適用でき、一貫性の保証に役立ちます。
このセクションでは、次のトピックについて説明します。
GTID の定義方法と作成方法、および GTID が MySQL サーバーでどのように表されるか (セクション17.1.3.1「GTID 形式および格納」 を参照)。
GTID のライフサイクル (セクション17.1.3.2「GTID ライフサイクル」 を参照)。
GTID を使用するレプリカとソースを同期するための自動配置機能 (セクション17.1.3.3「GTID 自動配置」 を参照)。
GTID ベースレプリケーションをセットアップおよび起動するための一般的な手順 (セクション17.1.3.4「GTID を使用したレプリケーションのセットアップ」を参照してください)。
GTID を使用するときに新しいレプリケーションサーバーをプロビジョニングするために推奨される方法 (セクション17.1.3.5「フェイルオーバーおよびスケールアウトでの GTID の使用」を参照してください)。
GTID ベースレプリケーションを使用するときに留意すべき制約と制限 (セクション17.1.3.7「GTID ベースレプリケーションの制約」を参照してください)。
GTID の操作に使用できるストアドファンクション (セクション17.1.3.8「GTID を操作するストアドファンクションの例」 を参照)。
GTID ベースレプリケーションに関係する MySQL Server オプションおよび変数については、セクション17.1.6.5「グローバルトランザクション ID システム変数」を参照してください。 GTID と一緒に使用するために MySQL 8.0 がサポートする SQL 関数については、セクション12.19「グローバルトランザクション識別子 (GTID) で使用される機能」も参照してください。