config.ini
ファイルの [mysqld]
および [api]
セクションでは、クラスタデータへのアクセスに使用される MySQL サーバー (SQL ノード) およびその他のアプリケーション (API ノード) が定義されます。示されているどのパラメータも必須ではありません。コンピュータ名またはホスト名が指定されていない場合は、任意のホストでこの SQL または API ノードを使用できます。
一般的には、[mysqld]
セクションはクラスタへの SQL インタフェースを提供する MySQL サーバーを示すために使用され、[api]
セクションはクラスタデータにアクセスする mysqld プロセス以外のアプリケーションのために使用されますが、この 2 つの指定は実際には同義です。たとえば、SQL ノードとして機能する MySQL サーバーのパラメータを [api]
セクションに指定できます。
MySQL Cluster 用の MySQL サーバーオプションについては、セクション18.3.4.2「MySQL Cluster 用の MySQL Server オプション」を参照してください。MySQL Cluster に関連する MySQL サーバーシステム変数については、セクション18.3.4.3「MySQL Cluster のシステム変数」を参照してください。
-
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 符号なし [none] 1 - 255 IS Id
は、すべてのクラスタ内部メッセージ内でノードを識別するために使用される整数値です。許容される値の範囲は、1-255 (これらを含む) です。この値は、ノードのタイプに関係なく、クラスタ内の各ノードで一意である必要があります。注記データノード ID は、使用する MySQL Cluster のバージョンに関係なく、49 未満である必要があります。多数のデータノードを配備する予定の場合は、API ノード (および管理ノード) のノード ID を 48 より大きい値に制限することをお勧めします。
NodeId
は、API ノードを識別するときに使用することが推奨されるパラメータ名です。(Id
は、下位互換性に引き続き対応しますが、現在は非推奨であり、使用時に警告を生成します。また、これは今後削除される予定です。) -
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 文字列 [none] ... N 接続するデータノードを指定します。
-
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 符号なし [none] 1 - 255 IS NodeId
は、すべてのクラスタ内部メッセージ内でノードを識別するために使用される整数値です。許容される値の範囲は、1-255 (これらを含む) です。この値は、ノードのタイプに関係なく、クラスタ内の各ノードで一意である必要があります。注記データノード ID は、使用する MySQL Cluster のバージョンに関係なく、49 未満である必要があります。多数のデータノードを配備する予定の場合は、API ノード (および管理ノード) のノード ID を 48 より大きい値に制限することをお勧めします。
NodeId
は、管理ノードを識別するときに使用することが推奨されるパラメータ名です。MySQL Cluster の非常に古いバージョンでは、この目的のためにエイリアス (Id
) が使用されていました。これは、下位互換性に引き続き対応していますが、現在は非推奨であり、使用時に警告を生成します。また、MySQL Cluster の今後のリリースで削除される予定です。 -
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 name [none] ... S これは、構成ファイルの
[computer]
セクションに定義されたいずれかのコンピュータ (ホスト) に設定されているId
を参照します。 -
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 名前または IP アドレス [none] ... N このパラメータを指定すると、SQL ノード (API ノード) が配置されるコンピュータのホスト名が定義されます。ホスト名を指定するには、このパラメータまたは
ExecuteOnComputer
のいずれかが必要です。config.ini
ファイルの特定の[mysql]
または[api]
セクションにHostName
またはExecuteOnComputer
が指定されていない場合、SQL または API ノードはネットワーク接続を確立できる任意のホストから対応する「スロット」を使用して管理サーバーホストマシンに接続できます。これは、ほかに指定されていない場合localhost
がHostName
として使用されるデータノードのデフォルトの動作とは異なります。 -
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 0-2 0 0 - 2 N このパラメータは、アービトレータとして機能できるノードを定義します。管理ノードと SQL ノードの両方がアービトレータになることができます。値 0 は、指定されたノードがアービトレータとして使用されないことを意味します。値 1 は、ノードにアービトレータとしての高い優先度を与えます。値 2 は低い優先度を与えます。通常の構成では、管理サーバーの
ArbitrationRank
が 1 (管理ノードのデフォルト) に設定され、各 SQL ノードでは 0 (SQL ノードのデフォルト) に設定されるため、管理サーバーがアービトレータとして使用されます。すべての管理および SQL ノードで
ArbitrationRank
を 0 に設定すると、アービトレーションを完全に無効化できます。このパラメーラをオーバーライドしてアービトレーションを制御することもできます。そのためには、config.ini
グローバル構成ファイルの[ndbd default]
セクションにArbitration
パラメータを設定します。 -
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 ミリ秒 0 0 - 4294967039 (0xFFFFFEFF) N このパラメータを 0 (デフォルト) 以外の値に設定すると、アービトレーション要求に対するアービトレータの応答が指定されたミリ秒数だけ遅延します。通常、この値を変更する必要はありません。
-
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 バイト 16K 1024 - 1M N フルテーブルスキャンまたはインデックスの範囲スキャンに変換されるクエリーでは、最良のパフォーマンスを得るため、適切にサイズ調整されたバッチでレコードをフェッチすることが重要です。レコード数 (
BatchSize
) とバイト数 (BatchByteSize
) の両方で、適切なサイズを設定できます。実際のバッチサイズは両方のパラメータによって制限されます。このパラメータの設定方法によっては、クエリーの実行速度の変化率が 40% を超える可能性があります。
このパラメータはバイト単位で測定されます。MySQL Cluster NDB 7.3 以降では、デフォルト値は 16K です。
-
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 レコード 256 1 - 992 N このパラメータはレコード数で測定され、デフォルトで 256 に設定されます。最大サイズは 992 です。
-
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 バイト 0 0 - 4294967039 (0xFFFFFEFF) N このパラメータは、
TotalSendBufferMemory
、SendBufferMemory
、またはその両方を使用して設定されたメモリーに加えて割り当てられるトランスポータ送信バッファーメモリーの量を指定します。 -
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 文字列 [none] ... S このパラメータを使用して、管理および API ノードのハートビートスレッドのスケジューリングポリシーと優先度を設定します。このパラメータを設定するための構文をここに示します。
HeartbeatThreadPriority = policy[, priority] policy: {FIFO | RR}
このパラメータを設定するときは、ポリシーを指定する必要があります。これは、
FIFO
(先入れ先出し) またはRR
(ラウンドロビン) のいずれかです。このあとに、オプションで優先度 (整数) を指定できます。 -
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 バイト 256K 32K - 16M N バッチサイズは、各データノードから送信される各バッチのサイズです。多数のノードから並列で受信される過大なデータ量から MySQL サーバーを保護するため、ほとんどのスキャンは並列で実行されます。このパラメータは、すべてのノードの合計バッチサイズに対する制限を設定します。
このパラメータのデフォルトの値は 256K バイトです。最大サイズは 16M バイトです。
-
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 バイト 256K 0 - 4294967039 (0xFFFFFEFF) N このパラメータは、すべての構成済みトランスポータ間で共有される送信バッファーメモリーの、このノードに割り当てられるメモリー合計量を決定するために使用されます。
このパラメータを設定する場合、許容される最小値は 256K バイト、最大値は 4294967039 です。
TotalSendBufferMemory
の動作と使用、および MySQL Cluster での送信バッファーメモリーパラメータの構成の詳細は、セクション18.3.2.12「MySQL Cluster の送信バッファーパラメータの構成」を参照してください。 -
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 ブール false true、false N このパラメータは、デフォルトで
false
です。これによって、切断された API ノード (SQL ノードとして機能する MySQL サーバーを含む) が既存の接続を再使用しようとせずに、クラスタへの新しい接続を強制的に使用するようになります (接続を再使用すると、動的に割り当てられたノード ID を使用するときに問題が発生することがあるため)。(Bug #45921)注記このパラメータは、NDB API を使用してオーバーライドできます。詳細は、Ndb_cluster_connection::set_auto_reconnect() および Ndb_cluster_connection::get_auto_reconnect() を参照してください。
-
DefaultOperationRedoProblemAction
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 列挙 QUEUE ABORT、QUEUE S このパラメータは、(
RedoOverCommitLimit
およびRedoOverCommitCounter
とともに) Redo ログをディスクにフラッシュする時間が長すぎる場合にデータノードによる操作の処理を制御します。これは、特定の Redo ログのフラッシュがRedoOverCommitLimit
秒より長い時間をかけてRedoOverCommitCounter
回を超える回数分行われ、保留中のトランザクションが中止されたときに発生します。この発生時は、ノードはここに示す
DefaultOperationRedoProblemAction
の値に応じた 2 つの方法のいずれかで応答できます。ABORT
: 中止されたトランザクションに含まれる保留中の操作も中止されます。QUEUE
: 中止されたトランザクションに含まれる保留中の操作がキューに入れられ、再試行されます。
-
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 LDM スレッド 3840 0 - 3840 N MySQL Cluster NDB 7.2.7 以降では、前のリリース (240) より大きなテーブルハッシュマップのデフォルトサイズ (3840) が使用されます。MySQL Cluster NDB 7.2.11 以降では、このパラメータを使用して
NDB
が使用するテーブルハッシュマップのサイズを構成できます (以前は、この値はハードコーディングされていました)。DefaultHashMapSize
には、3 つの値 (0、240、3840) のいずれかを指定できます。これらの値とその効果について、次の表で説明します。値 説明/効果 0
クラスタ内のすべてのデータおよび API ノードの中で、このパラメータに設定されたもっとも小さい値を (あれば) 使用します。どのデータまたは API ノードにも設定されていない場合は、デフォルト値を使用します。 240
MySQL Cluster NDB 7.2.7 より前のすべての MySQL Cluster リリースでデフォルトで使用されていた元のハッシュマップサイズです。 3840
MySQL Cluster NDB 7.2.7 以降でデフォルトで使用される、より大きなハッシュマップサイズ このパラメータの主な用途は、より大きなハッシュマップサイズ (3840) がデフォルトである MySQL Cluster NDB 7.2.7 以降の MySQL Cluster バージョンと以前のリリース (デフォルトが 240 だった) との間のアップグレードと (特に) ダウングレードを容易にすることです。これは、この変更に下位互換性がない (Bug #14800539) ためです。このパラメータを 240 に設定してから、この値を使用している古いバージョンからのアップグレードを実行すると、クラスタはテーブルハッシュマップに対して引き続き小さいサイズを使用するため、アップグレード後のテーブルでも前のバージョンとの互換性が維持されます。
DefaultHashMapSize
は個々のデータノード、API ノード、またはその両方で設定できますが、config.ini
ファイルの[ndbd default]
セクションに一度だけ設定する方法をお勧めします。このパラメータを増やしたあと、既存のテーブルで新しいサイズを利用するには、そのテーブルに対して
ALTER TABLE ... REORGANIZE PARTITION
を実行します。その後、そのテーブルでより大きなハッシュマップサイズを使用できるようになります。これは、ローリング再起動の実行に加えて行います。ローリング再起動を実行すると、より大きなハッシュマップを新しいテーブルで使用できるようになりますが、既存のテーブルでは使用できません。DefaultHashMapSize
を 3840 に設定してテーブルを作成または変更したあと、オンラインでこのパラメータを減らす方法は、現在サポートされていません。 -
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 ブール false true、false N WAN の TCP 設定をデフォルトとして使用します。
-
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 整数 0 0 - 4294967039 (0xFFFFFEFF) N MySQL Cluster NDB 7.3.7 および MySQL Cluster NDB 7.4.2 以降では、MySQL Cluster 内に起動されていないデータノードが多数ある場合に、このパラメータの値を増やし、クラスタ内のまだ機能し始めていないデータノードへの接続試行を回避して、管理ノードへの大量のトラフィックを抑えることができます。API ノードが新しいデータノードに接続されていない場合は、
StartConnectBackoffMaxTime
パラメータの値が適用されます。それ以外の場合は、ConnectBackoffMaxTime
を使用して接続試行間の待機時間の長さ (ミリ秒) が決定されます。このパラメータの経過時間を計算する際に、ノードの接続試行中に経過する時間は考慮されません。タイムアウトは、100 ミリ秒の遅延から始まり、約 100 ミリ秒の分解能で適用されます。後続の試行のたびに、
ConnectBackoffMaxTime
ミリ秒 (最大 100000 ミリ秒 (100 秒)) に達するまでこの期間の長さが倍加されます。API ノードがデータノードに接続され、そのノードが (ハートビートメッセージで) ほかのデータノードに接続したことを報告すると、データノードに対する接続試行はこのパラメータの影響を受けなくなり、その後接続されるまで 100 ミリ秒間隔で行われます。データノードが起動すると、これが発生したことが API ノードに通知されるまでに
HeartbeatIntervalDbApi
を要します。 -
有効なバージョン 型/単位 デフォルト 範囲/値 再起動タイプ NDB 7.3.0 整数 1500 0 - 4294967039 (0xFFFFFEFF) N MySQL Cluster NDB 7.3.7 および MySQL Cluster NDB 7.4.2 以降では、MySQL Cluster 内に起動されていないデータノードが多数ある場合に、このパラメータの値を増やし、クラスタ内のまだ機能し始めていないデータノードへの接続試行を回避して、管理ノードへの大量のトラフィックを抑えることができます。API ノードが新しいデータノードに接続されていない場合は、
StartConnectBackoffMaxTime
パラメータの値が適用されます。それ以外の場合は、ConnectBackoffMaxTime
を使用して接続試行間の待機時間の長さ (ミリ秒) が決定されます。このパラメータの経過時間を計算する際に、ノードの接続試行中に経過する時間は考慮されません。タイムアウトは、100 ミリ秒の遅延から始まり、約 100 ミリ秒の分解能で適用されます。後続の試行のたびに、
StartConnectBackoffMaxTime
ミリ秒 (最大 100000 ミリ秒 (100 秒)) に達するまでこの期間の長さが倍加されます。API ノードがデータノードに接続され、そのノードが (ハートビートメッセージで) ほかのデータノードに接続したことを報告すると、データノードに対する接続試行はこのパラメータの影響を受けなくなり、その後接続されるまで 100 ミリ秒間隔で行われます。データノードが起動すると、これが発生したことが API ノードに通知されるまでに
HeartbeatIntervalDbApi
を要します。
ここに示すように、mysql クライアントの SHOW STATUS
を使用して、MySQL Cluster SQL ノードとして実行されている MySQL サーバーから情報を取得することもできます。
mysql> SHOW STATUS LIKE 'ndb%';
+-----------------------------+---------------+
| Variable_name | Value |
+-----------------------------+---------------+
| Ndb_cluster_node_id | 5 |
| Ndb_config_from_host | 192.168.0.112 |
| Ndb_config_from_port | 1186 |
| Ndb_number_of_storage_nodes | 4 |
+-----------------------------+---------------+
4 rows in set (0.02 sec)
このステートメントの出力に表示されるステータス変数については、セクション18.3.4.4「MySQL Cluster のステータス変数」を参照してください。
実行中の MySQL Cluster の構成に新しい SQL または API ノードを追加するには、config.ini
ファイル (複数の管理サーバーを使用する場合は複数のファイル) に新しい [mysqld]
または [api]
セクションを追加したあとで、すべてのクラスタノードのローリング再起動を実行する必要があります。これは、新しい SQL または API ノードをクラスタに接続する前に実行する必要があります。
新しい SQL または API ノードがクラスタ構成内の以前に使用されていない API スロットを使用してクラスタに接続する場合、クラスタの再起動を実行する必要はありません。