MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  NDB Cluster レプリケーションの一般的な要件

23.6.2 NDB Cluster レプリケーションの一般的な要件

レプリケーションチャネルには、レプリケーションサーバーとして機能する 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=id オプションを使用して各 SQL ノードを起動して、実行できます。ここで、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「ステートメントベースおよび行ベースレプリケーションのメリットとデメリット」を参照してください。


関連キーワード:  NDB, テーブル, ndbinfo, ndb, ノード, サーバー, クラスタ, 構成, データ, 管理