この項では MySQL Cluster によるストレージ用のデータの分割または複製方法について説明します。
この件で特に理解していただきたいのは以下のコンセプトで、簡単な定義と共にここに一覧にまとめました。
(データ) ノード:ndbd プロセスは レプリカ —を保持します。つまり そのノードが構成要素であるノード グループに割り当てられた パーテッション (以下参照) のコピーです。
各データノードは個別のコンピューターに配置される必要があります。1 台のコンピューターで複数の ndbd プロセスをホストできますが、そのような設定はサポートしていません。
用語の 「ノード」 や 「データノード」 のは一般的には ndbd プロセスを意味する場合にはどちらも使用できますが、マネジメント (MGM) ノード (ndb_mgmd プロセス) および SQL ノード (mysqld プロセス) はこの説明ではそのように指定されます。
ノード グループ:ノードグループは 1 つ以上のノードで構成され、パーテッション、あるいはレプリカ (次のアイテム参照) のセットを保持します。
注:現在は、クラスタのすべてのノード グループは同数のノードを持つ必要があります。
パーテッション:これはクラスタで保持されているデータの一部です。クラスタのノードのパーテッション数ほどのクラスタのパーテッション数があります。各ノードはクラスタで利用できるノードに割り当てられた少なくともパーテッションのコピー 1 つ (つまり、少なくても 1 つのレプリカ) を維持する役目があります。
レプリカはすべて 1 つのノードに属します。ノードはいくつかのレプリカを保持(通常保持する)できます。
レプリカ:これはクラスタのパーテッションのコピーです。ノード グループの各ノードはレプリカを 1 つ保存します。パーテッション レプリカと呼ばれる場合もあります。ノードグループ毎のレプリカの数はノードの数に一致します。
以下はそれぞれ 2 つのノードを持つ 2 つのノード グループを配置した 4 つのデータノードを持つ MySQL Cluster の図です。ノード 1 およびノード 2 はノード グループ 0 に属し、ノード 3 とノード 4 はノード グループ 1 に属します。ここではデータ (ndbd) ノードのみ示しています。実際に使用されるクラスタではクラスタの管理に ndb_mgm プロセスとクラスタに保持されているデータにアクセスするための少なくとも 1 つの SQL ノードが必要ですが、分かり易くするためにここでは省略しています。
クラスタが保持するデータは 0、1、2、3 の番号を付いた 4 つのパーテッションに分割されます。各パーテッションは同じノード グループの—複数のコピー—に保持されます。パーテッションは交互にノードグループに保持存されます。
パーテッション 0 はノードグループ 0 に保持されます。プライマリ レプリカ (プライマリ コピー) はノード 1 に保持されます。バックアップ レプリカ (パーテッションのバックアップ コピー) はノード 2 に保持されます。
パーテッション 1 は別のノード グループ(ノード グループ 1) に保持されます。このパーテッションのプライマリ レプリカはノード 3、そのバックアップ レプリカはノード 4 の保持されます。
パーテッション 2 はノードグループ 0 に保持されます。しかし、2 つのレプリカの配置はパーテッション 0 と逆になります。パーテッション 2 では、プライマリ レプリカはノード 2 に保持され、バックアップはノード 1 に保持されます。
パーテッション 3 はノードグループ 1 に保存され、その 2 つのレプリカの配置はパーテッション 1 のそれと逆になります。つまり、プライマリ レプリカはノード 4 に配置され、バックアップはノード 3 に配置されます。
MySQL Cluster の継続的なオペレーションに関してこの意味するところは以下のようになります。クラスタで使用される各ノード グループが動作している少なくとも 1 つのノードを持つ限り、クラスタはすべてのデータの完全なコピーを持ち実行可能であり続けます。これを次の図に示します。
この例では、クラスタがそれぞれ 2 つのノードを持つ 2 つのノード グループで構成されている場合、すくなくともノード グループ 0 に 1 つのノードおよび少なくともノード グループ 1 の 1 つのノードの組み合わせでクラスタを 「有効」 に維持します(図の矢印で示した部分)ことができます。しかし、どちらかのノードグループの両方のノードが失敗した場合、残りの 2 つのノードでは不十分(X の印の付いた矢印)です。どちらの場合も、クラスタは全体のパーテッションを失いすべてのクラスタのデータの完全なセットのアクセスを提供できなくなります。