さらに完成された例のシナリオでは、2 つのレプリケーションチャネルを使用することで冗長性を提供し、これによって、1 つのレプリケーションチャネルで発生する可能性のある障害を防ぐことを想定しています。 これには、合計 4 台のレプリケーションサーバー、ソースクラスタに 2 台のソースサーバー、レプリカクラスタに 2 台のレプリカサーバーが必要です。 以後の説明では、一意の識別子が次のように割り当てられているものとします。
表 23.68 テキストで説明されている NDB Cluster レプリケーションサーバー
サーバー ID | 説明 |
---|---|
1 | ソース - プライマリレプリケーションチャネル (S) |
2 | ソース - セカンダリレプリケーションチャネル (S') |
3 | レプリカ - プライマリレプリケーションチャネル (R) |
4 | レプリカ - セカンダリレプリケーションチャネル (R') |
2 つのチャネルを使用するレプリケーションの設定は、1 つのレプリケーションチャネルの設定と根本的に異なるわけではありません。 まず、プライマリおよびセカンダリのレプリケーションソースサーバーの mysqld プロセスを起動してから、プライマリおよびセカンダリの複製のプロセスを起動する必要があります。 レプリケーションプロセスは、各レプリカに対して START REPLICA | SLAVE
ステートメントを発行することで開始できます。 コマンドと、そのコマンドの発行に必要な順序を次に示します。
-
プライマリレプリケーションソースを起動します:
shellS> mysqld --ndbcluster --server-id=1 \ --log-bin &
-
セカンダリレプリケーションソースを起動します:
shellS'> mysqld --ndbcluster --server-id=2 \ --log-bin &
-
プライマリレプリカサーバーを起動します:
shellR> mysqld --ndbcluster --server-id=3 \ --skip-slave-start &
-
セカンダリレプリカサーバーを起動します:
shellR'> mysqld --ndbcluster --server-id=4 \ --skip-slave-start &
-
最後に、次に示すように、プライマリレプリカで
START REPLICA | SLAVE
ステートメントを実行して、プライマリチャネルでレプリケーションを開始します:mysqlR> START SLAVE; Or from MySQL 8.0.22: mysqlR> START REPLICA;
警告この時点ではプライマリチャネルのみを起動する必要があります。 セカンダリレプリケーションチャネルは、セクション23.6.8「NDB Cluster レプリケーションによるフェイルオーバーの実装」 で説明されているように、プライマリレプリケーションチャネルに障害が発生した場合にのみ起動する必要があります。 複数のレプリケーションチャネルを同時に実行すると、不要な重複レコードがレプリカに作成される可能性があります。
前述のように、レプリカでバイナリロギングを有効にする必要はありません。