MySQL Group Replication は MySQL プラグインであり、バイナリログ、行ベースのロギング、グローバルトランザクション識別子などの機能を利用して、既存の MySQL レプリケーションインフラストラクチャ上に構築されます。 パフォーマンススキーマやプラグイン、サービスインフラストラクチャなど、現在の MySQL フレームワークと統合されます。 次の図に、MySQL Group Replication の全体的なアーキテクチャを示すブロック図を示します。
MySQL Group Replication プラグインには、プラグインが MySQL Server とどのように相互作用するかを制御する、取得、適用およびライフサイクル用の一連の API が含まれています。 サーバーからプラグインへ、またはその逆への情報フローを行うインタフェースがあります。 これらのインタフェースは、MySQL Server コアを Group Replication プラグインから分離し、ほとんどの場合、トランザクション実行パイプラインに配置されるフックです。 サーバーからプラグインへの一方向に、サーバーの起動、サーバーのリカバリ、接続を受け入れる準備ができているサーバー、トランザクションをコミットしようとしているサーバーなどのイベントの通知があります。 もう一方の方向では、プラグインは進行中のトランザクションのコミットや中断、リレーログ内のトランザクションのキューイングなどのアクションを実行するようにサーバーに指示します。
Group Replication プラグインアーキテクチャーの次のレイヤーは、通知がルーティングされたときに反応する一連のコンポーネントです。 取得コンポーネントは、実行中のトランザクションに関連するコンテキストを追跡します。 applier コンポーネントは、データベースでリモートトランザクションを実行します。 リカバリコンポーネントは分散リカバリを管理し、ドナーを選択してキャッチアップ手順を管理し、ドナー障害に対応することで、グループに最新の状態で参加しているサーバーを取得します。
スタックを続行すると、レプリケーションプロトコルモジュールにはレプリケーションプロトコルの特定のロジックが含まれます。 競合検出を処理し、トランザクションを受信してグループに伝播します。
Group Replication プラグインアーキテクチャの最後の 2 つのレイヤーは、Group Communication System (GCS) API と Paxos ベースのグループ通信エンジン (XCom) の実装です。 GCS API は、レプリケートされた状態マシンの構築に必要なプロパティを抽象化する高レベルの API です (セクション18.1「グループレプリケーションのバックグラウンド」 を参照)。 したがって、メッセージングレイヤーの実装がプラグインの残りの上位レイヤーから切り離されます。 グループ通信エンジンは、レプリケーショングループのメンバーとの通信を処理します。