Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


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

このセクションでは、MySQL Cluster ノードをオンラインで追加する際の動作および現在の制限事項に関する一般的な情報を示します。

データの再配布  新しいノードをオンラインで追加する機能には、ALTER ONLINE TABLE ... REORGANIZE PARTITION ステートメントを使用して、すべてのデータノード (新しいものを含む) 間で配布されるように NDBCLUSTER テーブルデータおよびインデックスを再編成する手段も含まれます。インメモリーとディスクデータの両方のテーブルの再編成がサポートされています。現在、この再配布には一意のインデックスが含まれていません (順序付きインデックスのみが再配布されます)。MySQL Cluster NDB 7.3.3 より前では、この方法を使用して BLOB テーブルデータも再配布されません (Bug #13714148)。

新しいデータノードが追加される前にすでに存在していた NDBCLUSTER テーブルの再配布は、自動的に実行されませんが、mysql または別の MySQL クライアントアプリケーションで単純な SQL ステートメントを使用して実現できます。ただし、新しいノードグループが追加されたあとに作成されたテーブルに追加されたすべてのデータおよびインデックスは、すべてのクラスタデータノード (新しいノードグループの一部として追加されたものを含む) 間で自動的に配布されます。

部分的な起動  新しいデータノードがすべて起動されていなくても、新しいノードグループを追加できます。また、新しいノードグループを機能低下状態のクラスタ (つまり、部分的にしか起動されていないクラスタや、1 つ以上のデータノードが実行されていないクラスタ) に追加することもできます。後者の場合、新しいノードグループを追加する前に、クラスタで十分な数のノードが実行可能になっている必要があります。

進行中の操作への影響  新しいノードグループを作成または追加したり、テーブルを再編成したりしても、MySQL Cluster データを使用する通常の DML 操作は妨げられません。ただし、テーブルの再編成と同時に DDL を実行することはできません。つまり、ALTER TABLE ... REORGANIZE PARTITION ステートメントの実行中は、ほかの DDL ステートメントを発行できません。さらに、ALTER TABLE ... REORGANIZE PARTITION の実行 (またはその他の DDL ステートメントの実行) 中は、クラスタデータノードを再起動できません。

エラー処理  ノードグループの作成時およびテーブルの再編成時のデータノードのエラーは、次の表に示すように処理されます。

エラーが発生するタイミング: エラーが発生する場所:
古いデータノード 新しいデータノード システム
ノードグループの作成
  • マスター以外のノードでエラーが発生した場合:  ノードグループの作成は常にロールフォワードされます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. ndb_mgm クライアントで CREATE NODEGROUP を発行してから、mysql クライアントで任意の ALTER ONLINE TABLE ... REORGANIZE PARTITION ステートメントを発行するまでの間。

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

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