MySQL マルチソースレプリケーションを使用すると、レプリカは複数の即時ソースからトランザクションをパラレルに受信できます。 マルチソースレプリケーショントポロジでは、レプリカはトランザクションの受信元となるソースごとにレプリケーションチャネルを作成します。 レプリケーションチャネルの機能の詳細は、セクション17.2.2「レプリケーションチャネル」 を参照してください。
マルチソースレプリケーションを実装して、次のような目標を達成できます:
複数のサーバーの単一サーバーへのバックアップ。
テーブルシャードをマージしています。
複数のサーバーのデータを単一のサーバーに統合します。
マルチソースレプリケーションでは、トランザクションの適用時に競合検出または解消は実装されず、必要に応じてこれらのタスクがアプリケーションに残されます。
マルチソースレプリカ上の各チャネルは、異なるソースからレプリケートする必要があります。 単一のレプリカから単一のソースに複数のレプリケーションチャネルを設定することはできません。 これは、レプリカのサーバー ID がレプリケーショントポロジ内で一意である必要があるためです。 ソースはレプリカをサーバー ID でのみ区別し、レプリケーションチャネルの名前では区別しないため、同じレプリカとは異なるレプリケーションチャネルを認識できません。
rmulti-source レプリカは、slave_parallel_workers
システム変数を 0 より大きい値に設定することで、マルチスレッドレプリカとして設定することもできます。 マルチソースレプリカでこれを行う場合、レプリカ上の各チャネルには、指定された数のアプライヤスレッドと、それらを管理するためのコーディネータスレッドがあります。 個々のチャネルのアプライヤスレッドの数は構成できません。
MySQL 8.0 から、特定のレプリケーションチャネルでレプリケーションフィルタを使用してマルチソースレプリカを構成できます。 チャネル固有のレプリケーションフィルタは、同じデータベースまたはテーブルが複数のソースに存在し、単一のソースからレプリケートする場合にのみ使用できます。 GTID ベースのレプリケーションでは、(ダイアモンドトポロジなどの) 複数のソースから同じトランザクションが到着する可能性がある場合、フィルタリング設定がすべてのチャネルで同じであることを確認する必要があります。 詳細は、セクション17.2.5.4「レプリケーションチャネルベースのフィルタ」を参照してください。
このセクションでは、マルチソースレプリケーションのソースおよびレプリカの構成方法、マルチソースレプリカの起動、停止およびリセット方法、およびマルチソースレプリケーションの監視方法に関するチュートリアルを示します。