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


MySQL 8.0 リファレンスマニュアル  /  ...  /  NDB Cluster データノードのオンラインでの追加: 一般的な問題

23.5.7.1 NDB Cluster データノードのオンラインでの追加: 一般的な問題

このセクションでは、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 ノードグループの作成およびテーブルの再編成中のデータノード障害処理

失敗期間 「旧」データノードで障害が発生しました 「新規」データノードで障害が発生しました システム障害
ノードグループの作成
  • マスター以外のノードでエラーが発生した場合:  ノードグループの作成は常にロールフォワードされます。

  • マスターでエラーが発生した場合: 

    • 内部コミットポイントに達した場合:  ノードグループの作成はロールフォワードされます。

    • 内部コミットポイントにまだ達していない場合:  ノードグループの作成はロールバックされます。

  • マスター以外のノードでエラーが発生した場合:  ノードグループの作成は常にロールフォワードされます。

  • マスターでエラーが発生した場合: 

    • 内部コミットポイントに達した場合:  ノードグループの作成はロールフォワードされます。

    • 内部コミットポイントにまだ達していない場合:  ノードグループの作成はロールバックされます。

  • CREATE NODEGROUP の実行が内部コミットポイントに達した場合:  再起動時に、クラスタは新しいノードグループを含みます。 それ以外の場合は、含みません。

  • CREATE NODEGROUP の実行が内部コミットポイントにまだ達していない場合:  再起動時に、クラスタは新しいノードグループを含みません。

テーブルの再編成
  • マスター以外のノードでエラーが発生した場合:  テーブルの再編成は常にロールフォワードされます。

  • マスターでエラーが発生した場合: 

    • 内部コミットポイントに達した場合:  テーブルの再編成はロールフォワードされます。

    • 内部コミットポイントにまだ達していない場合:  テーブルの再編成はロールバックされます。

  • マスター以外のノードでエラーが発生した場合:  テーブルの再編成は常にロールフォワードされます。

  • マスターでエラーが発生した場合: 

    • 内部コミットポイントに達した場合:  テーブルの再編成はロールフォワードされます。

    • 内部コミットポイントにまだ達していない場合:  テーブルの再編成はロールバックされます。

  • ALTER TABLE ... REORGANIZE PARTITION ステートメントの実行が内部コミットポイントに達した場合:  クラスタの再起動時に、table に属するデータおよびインデックスが新しいデータノードを使用して配布されます。

  • ALTER TABLE ... REORGANIZE PARTITION ステートメントの実行がまだ内部コミットポイントに達していない場合:  クラスタの再起動時に、table に属するデータおよびインデックスが古いデータノードのみを使用して配布されます。


ノードグループの削除.  ndb_mgm クライアントは、DROP NODEGROUP コマンドをサポートしていますが、ノードグループ内のデータノードにどのデータも含まれていない場合にのみ削除できます。 現在、特定のデータノードまたはノードグループを空にする方法がないため、このコマンドは次の 2 つのケースでしか機能しません。

  1. ndb_mgm クライアントで CREATE NODEGROUP を発行した後、mysql クライアントで ALTER TABLE ... REORGANIZE PARTITION ステートメントを発行する前。

  2. DROP TABLE を使用してすべての NDBCLUSTER テーブルを削除したあと。

    データノードには引き続きテーブルの定義が格納されるため、この目的では TRUNCATE TABLE は機能しません。


関連キーワード:  NDB, テーブル, ノード, ndbinfo, データ, ndb, グループ, 追加, 作成, 構成