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


MySQL 8.0 リファレンスマニュアル  /  ...  /  NDB Cluster データノードのオンラインでの追加: 基本手順

23.5.7.2 NDB Cluster データノードのオンラインでの追加: 基本手順

このセクションでは、NDB Cluster に新しいデータノードを追加するために必要な基本的な手順を示します。 この手順は、データノードのプロセスに ndbd バイナリと ndbmtd バイナリのどちらを使用する場合でも適用されます。 詳細な例については、セクション23.5.7.3「NDB Cluster データノードのオンラインでの追加: 詳細な例」を参照してください。

NDB Cluster がすでに実行されていると仮定すると、データノードをオンラインで追加するには、次の手順が必要です:

  1. 追加対象のノードに対応する新しい [ndbd] セクションを追加して、クラスタ構成 config.ini ファイルを編集します。 クラスタで複数の管理サーバーが使用されている場合は、管理サーバーで使用されるすべての config.ini ファイルに、これらの変更を加える必要があります。

    config.ini ファイルに追加される新しいデータノードのノード ID が、既存のノードで使用されるノード ID と重複しないように注意する必要があります。 動的に割り当てられたノード ID を使用している API ノードがあり、それらの ID が新しいノードに使用するノード ID と一致する場合は、この手順の後半で説明するように、このような API ノードを強制的に移行できます。

  2. すべての NDB Cluster 管理サーバーのローリング再起動を実行します。

    重要

    新しい構成を強制的に読み取るには、すべての管理サーバーを --reload または --initial オプションを付けて再起動する必要があります。

  3. すべての既存の NDB Cluster データノードのローリング再起動を実行します。 既存のデータノードを再起動するときは、--initial を使用する必要がありません (通常は望ましくもありません)。

    新しいデータノードに割り当てるいずれかのノード ID と一致する動的に割り当てられた ID を持つ API ノードを使用している場合は、このステップでデータノードプロセスのいずれかを再起動する前に、すべての API ノード (SQL ノードを含む) を再起動する必要があります。 これにより、事前に明示的に割り当てられなかったノード ID を持つ API ノードは、このようなノード ID を放棄し、新しい ID を取得します。

  4. NDB Cluster に接続されている SQL または API ノードのローリング再起動を実行します。

  5. 新しいデータノードを起動します。

    新しいデータノードは、任意の順序で起動できます。 またそれらは、既存のすべてのデータノードのローリング再起動が完了してから、次のステップに進むまでの間に起動されるかぎり、同時に起動することもできます。

  6. NDB Cluster 管理クライアントで 1 つまたは複数の CREATE NODEGROUP コマンドを実行して、新しいデータノードが属する新しいノードグループまたはノードグループを作成します。

  7. 新しいデータノードを含め、すべてのデータノード間でクラスタデータを再配布します。 通常、これを行うには、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 に追加されたデータは、そのテーブルが再編成されるまで新しいノードを使用して分散されません。

  8. ALTER TABLE ... REORGANIZE PARTITION ALGORITHM=INPLACE はパーティションを再編成しますが、old ノードで解放された領域は再利用しません。 これを行うには、mysql クライアントで NDBCLUSTER テーブルごとに OPTIMIZE TABLE ステートメントを発行します。

    これは、インメモリー NDB テーブルの可変幅カラムで使用される領域に対して機能します。 OPTIMIZE TABLE は、インメモリーテーブルの固定幅カラムではサポートされていません。「ディスクデータ」テーブルでもサポートされていません。

目的のノードをすべて追加してから、複数の CREATE NODEGROUP コマンドを連続して発行し、新しいノードグループをクラスタに追加できます。


関連キーワード:  NDB, テーブル, ノード, ndbinfo, データ, ndb, 追加, 管理, 構成, インストール