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