このセクションでは、NDB Cluster ノードをオンラインで追加する際の動作および現在の制限に関する一般的な情報を提供します。
データの再配布.
新しいノードをオンラインで追加する機能には、ALTER TABLE ... REORGANIZE PARTITION
ステートメントを使用して、新しいノードを含むすべてのデータノードに分散されるように NDBCLUSTER
テーブルのデータおよびインデックスを再編成する手段が含まれます。 インメモリーとディスクデータの両方のテーブルの再編成がサポートされています。 現在、この再配布には一意のインデックスが含まれていません (順序付きインデックスのみが再配布されます)。
新しいデータノードが追加される前にすでに存在していた NDBCLUSTER
テーブルの再配布は、自動的に実行されませんが、mysql または別の MySQL クライアントアプリケーションで単純な SQL ステートメントを使用して実現できます。 ただし、新しいノードグループが追加されたあとに作成されたテーブルに追加されたすべてのデータおよびインデックスは、すべてのクラスタデータノード (新しいノードグループの一部として追加されたものを含む) 間で自動的に配布されます。
部分的な起動. 新しいデータノードがすべて起動されていなくても、新しいノードグループを追加できます。 また、新しいノードグループを機能低下状態のクラスタ (つまり、部分的にしか起動されていないクラスタや、1 つ以上のデータノードが実行されていないクラスタ) に追加することもできます。 後者の場合、新しいノードグループを追加する前に、クラスタで十分な数のノードが実行可能になっている必要があります。
進行中の操作への影響.
NDB Cluster データを使用する通常の DML 操作は、新しいノードグループの作成や追加、またはテーブルの再編成によって妨げられることはありません。 ただし、テーブルの再編成と同時に DDL を実行することはできません。つまり、ALTER TABLE ... REORGANIZE PARTITION
ステートメントの実行中は、ほかの DDL ステートメントを発行できません。 さらに、ALTER TABLE ... REORGANIZE PARTITION
の実行 (またはその他の DDL ステートメントの実行) 中は、クラスタデータノードを再起動できません。
エラー処理. ノードグループの作成中およびテーブルの再編成中のデータノードの障害は、次のテーブルに示すように処理されます:
表 23.64 ノードグループの作成およびテーブルの再編成中のデータノード障害処理
失敗期間 | 「「旧」」データノードで障害が発生しました | 「「新規」」データノードで障害が発生しました | システム障害 |
---|---|---|---|
ノードグループの作成 |
|
|
|
テーブルの再編成 |
|
|
|
ノードグループの削除.
ndb_mgm クライアントは、DROP NODEGROUP
コマンドをサポートしていますが、ノードグループ内のデータノードにどのデータも含まれていない場合にのみ削除できます。 現在、特定のデータノードまたはノードグループを「空にする」方法がないため、このコマンドは次の 2 つのケースでしか機能しません。
ndb_mgm クライアントで
CREATE NODEGROUP
を発行した後、mysql クライアントでALTER TABLE ... REORGANIZE PARTITION
ステートメントを発行する前。-
DROP TABLE
を使用してすべてのNDBCLUSTER
テーブルを削除したあと。データノードには引き続きテーブルの定義が格納されるため、この目的では
TRUNCATE TABLE
は機能しません。