MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
このセクションでは、NDB Cluster に新しいデータノードを追加するために必要な基本的な手順を示します。 この手順は、データノードのプロセスに ndbd バイナリと ndbmtd バイナリのどちらを使用する場合でも適用されます。 詳細な例については、セクション23.5.7.3「NDB Cluster データノードのオンラインでの追加: 詳細な例」を参照してください。
NDB Cluster がすでに実行されていると仮定すると、データノードをオンラインで追加するには、次の手順が必要です:
追加対象のノードに対応する新しい [ndbd]
セクションを追加して、クラスタ構成 config.ini
ファイルを編集します。 クラスタで複数の管理サーバーが使用されている場合は、管理サーバーで使用されるすべての config.ini
ファイルに、これらの変更を加える必要があります。
config.ini
ファイルに追加される新しいデータノードのノード ID が、既存のノードで使用されるノード ID と重複しないように注意する必要があります。 動的に割り当てられたノード ID を使用している API ノードがあり、それらの ID が新しいノードに使用するノード ID と一致する場合は、この手順の後半で説明するように、このような API ノードを強制的に「移行」できます。
すべての NDB Cluster 管理サーバーのローリング再起動を実行します。
新しい構成を強制的に読み取るには、すべての管理サーバーを --reload
または --initial
オプションを付けて再起動する必要があります。
すべての既存の NDB Cluster データノードのローリング再起動を実行します。 既存のデータノードを再起動するときは、--initial
を使用する必要がありません (通常は望ましくもありません)。
新しいデータノードに割り当てるいずれかのノード ID と一致する動的に割り当てられた ID を持つ API ノードを使用している場合は、このステップでデータノードプロセスのいずれかを再起動する前に、すべての API ノード (SQL ノードを含む) を再起動する必要があります。 これにより、事前に明示的に割り当てられなかったノード ID を持つ API ノードは、このようなノード ID を放棄し、新しい ID を取得します。
NDB Cluster に接続されている SQL または API ノードのローリング再起動を実行します。
新しいデータノードを起動します。
新しいデータノードは、任意の順序で起動できます。 またそれらは、既存のすべてのデータノードのローリング再起動が完了してから、次のステップに進むまでの間に起動されるかぎり、同時に起動することもできます。
NDB Cluster 管理クライアントで 1 つまたは複数の CREATE NODEGROUP
コマンドを実行して、新しいデータノードが属する新しいノードグループまたはノードグループを作成します。
新しいデータノードを含め、すべてのデータノード間でクラスタデータを再配布します。 通常、これを行うには、NDBCLUSTER
テーブルごとに mysql クライアントで ALTER TABLE ... ALGORITHM=INPLACE, REORGANIZE PARTITION
ステートメントを発行します。
例外: MAX_ROWS
オプションを使用して作成されたテーブルの場合、このステートメントは機能しません。かわりに、ALTER TABLE ... ALGORITHM=INPLACE MAX_ROWS=...
を使用してこのようなテーブルを再編成します。 また、MAX_ROWS
を使用してパーティション数をこの方法で設定することは非推奨であり、かわりに PARTITION_BALANCE
を使用する必要があります。詳細は、セクション13.1.20.11「NDB_TABLE オプションの設定」 を参照してください。
これは、新しいノードグループを追加する時点ですでに存在しているテーブルに対してのみ実行する必要があります。 新しいノードグループが追加された後に作成されたテーブルのデータは自動的に分散されますが、新しいノードが追加される前に存在していた特定のテーブル tbl
に追加されたデータは、そのテーブルが再編成されるまで新しいノードを使用して分散されません。
ALTER TABLE ... REORGANIZE PARTITION ALGORITHM=INPLACE
はパーティションを再編成しますが、「old」 ノードで解放された領域は再利用しません。 これを行うには、mysql クライアントで NDBCLUSTER
テーブルごとに OPTIMIZE TABLE
ステートメントを発行します。
これは、インメモリー NDB
テーブルの可変幅カラムで使用される領域に対して機能します。 OPTIMIZE TABLE
は、インメモリーテーブルの固定幅カラムではサポートされていません。「ディスクデータ」テーブルでもサポートされていません。
目的のノードをすべて追加してから、複数の CREATE NODEGROUP
コマンドを連続して発行し、新しいノードグループをクラスタに追加できます。