レプリケーションチャネルには、レプリケーションサーバーとして機能する 2 つの MySQL サーバーが必要です (それぞれがソースおよびレプリカ用です)。 たとえば、2 つのレプリケーションチャネルを持つレプリケーション設定の場合 (冗長性のための追加チャネルを提供するため)、合計 4 つのレプリケーションノードがクラスタごとに 2 つあります。
このセクションで説明されている NDB Cluster のレプリケーションと、次のレプリケーションは行ベースレプリケーションに依存します。 これは、セクション23.6.6「NDB Cluster レプリケーションの開始 (シングルレプリケーションチャネル)」 で説明されているように、レプリケーションソースの MySQL サーバーが --binlog-format=ROW
または --binlog-format=MIXED
で実行されている必要があることを意味します。 行ベースのレプリケーションの一般的な情報は、セクション17.2.1「レプリケーション形式」を参照してください。
NDB Cluster レプリケーションを --binlog-format=STATEMENT
で使用しようとすると、ソースクラスタ上の ndb_binlog_index
テーブルおよびレプリカクラスタ上の ndb_apply_status
テーブルの epoch
カラムが更新されないため、レプリケーションは正しく機能しません (セクション23.6.4「NDB Cluster レプリケーションスキーマおよびテーブル」 を参照)。 かわりに、レプリケーションソースとして機能する MySQL サーバー上の更新のみがレプリカに伝播され、ソースクラスタ内の他の SQL ノードからの更新はレプリケートされません。
--binlog-format
オプションのデフォルト値は MIXED
です。
いずれかのクラスタでレプリケーションに使用される各 MySQL サーバーは、いずれかのクラスタに参加しているすべての MySQL レプリケーションサーバー間で一意に識別される必要があります (ソースクラスタとレプリカクラスタの両方で同じ ID を共有するレプリケーションサーバーを持つことはできません)。 これは、--server-id=
オプションを使用して各 SQL ノードを起動して、実行できます。ここで、id
id
は一意の整数です。 厳密には必要ありませんが、この説明では、すべての NDB Cluster バイナリが同じリリースバージョンであることを前提としています。
MySQL レプリケーションでは通常、使用するレプリケーションプロトコルおよびサーバーがサポートする SQL 機能セットの両方のバージョンに関与する両方の MySQL サーバー (mysqld プロセス) に互換性がある必要があります (セクション17.5.2「MySQL バージョン間のレプリケーション互換性」を参照してください)。 NDB Cluster と MySQL Server 8.0 ディストリビューションのバイナリの違いにより、NDB Cluster Replication には、両方の mysqld バイナリが NDB Cluster ディストリビューションからのものであるという追加要件があります。 mysqld サーバーに互換性があることを保証するもっとも簡単で簡単な方法は、すべてのソースおよびレプリカ mysqld バイナリに同じ NDB Cluster 配布を使用することです。
レプリカサーバーまたはクラスタがソースクラスタのレプリケーション専用であり、他のデータが格納されていないことを前提としています。
レプリケートされるすべての NDB
テーブルは、MySQL サーバーおよびクライアントを使用して作成する必要があります。 NDB API を使用して (たとえば、Dictionary::createTable()
を使用して) 作成されたテーブルおよびその他のデータベースオブジェクトは、MySQL サーバーに表示されないため、レプリケートされません。 NDB API アプリケーションによる、MySQL サーバーを使用して作成された既存のテーブルへの更新はレプリケートできます。
ステートメントベースレプリケーションを使用して NDB Cluster をレプリケートできます。 ただし、この場合、次の制限が適用されます。
ソースとして機能するクラスタ上のデータ行に対するすべての更新は、単一の MySQL サーバーに転送する必要があります。
複数の同時 MySQL レプリケーションプロセスを使用してクラスタを複製することはできません。
SQL レベルで行われた変更のみが複製されます。
これらは、行ベースのレプリケーションと対照的に、ステートメントベースのレプリケーションのその他の制限事項に追加されます。2 つのレプリケーション形式の間の違いに関する詳細な情報については、セクション17.2.1.1「ステートメントベースおよび行ベースレプリケーションのメリットとデメリット」を参照してください。