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