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


MySQL 8.0 リファレンスマニュアル  /  ...  /  NDB Cluster での SQL およびその他の API ノードの定義

23.3.3.7 NDB Cluster での SQL およびその他の API ノードの定義

config.ini ファイルの [mysqld] および [api] セクションでは、クラスタデータへのアクセスに使用される MySQL サーバー (SQL ノード) およびその他のアプリケーション (API ノード) が定義されます。 示されているどのパラメータも必須ではありません。 コンピュータ名またはホスト名が指定されていない場合は、任意のホストでこの SQL または API ノードを使用できます。

一般的には、[mysqld] セクションはクラスタへの SQL インタフェースを提供する MySQL サーバーを示すために使用され、[api] セクションはクラスタデータにアクセスする mysqld プロセス以外のアプリケーションのために使用されますが、この 2 つの指定は実際には同義です。たとえば、SQL ノードとして機能する MySQL サーバーのパラメータを [api] セクションに指定できます。

注記

NDB Cluster の MySQL サーバーオプションについては、セクション23.3.3.9.1「NDB Cluster の MySQL Server オプション」 を参照してください。 NDB Cluster に関連する MySQL サーバーシステム変数については、セクション23.3.3.9.2「NDB Cluster システム変数」 を参照してください。

  • Id

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 unsigned
    デフォルト [...]
    範囲 1 - 255
    再起動タイプ

    IS (NDB 8.0.13)

    Id は、すべてのクラスタ内部メッセージ内でノードを識別するために使用される整数値です。 許容される値の範囲は、1-255 (これらを含む) です。 この値は、ノードのタイプに関係なく、クラスタ内の各ノードで一意である必要があります。

    注記

    NDB 8.0.18 以降では、データノード ID は 145 未満である必要があります。 多数のデータノードを配備する予定の場合は、API ノード (および管理ノード) のノード ID を 144 より大きい値に制限することをお勧めします。 (NDB 8.0.18 より前では、データノード ID でサポートされる最大値は 48 でした。)

    NodeId は、API ノードを識別するときに使用することが推奨されるパラメータ名です。 (Id は、下位互換性に引き続き対応しますが、現在は非推奨であり、使用時に警告を生成します。 また、これは今後削除される予定です。)

  • ConnectionMap

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 string
    デフォルト [...]
    範囲 ...
    再起動タイプ

    N (NDB 8.0.13)

    接続するデータノードを指定します。

  • NodeId

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 unsigned
    デフォルト [...]
    範囲 1 - 255
    再起動タイプ

    IS (NDB 8.0.13)

    NodeId は、すべてのクラスタ内部メッセージ内でノードを識別するために使用される整数値です。 許容される値の範囲は、1-255 (これらを含む) です。 この値は、ノードのタイプに関係なく、クラスタ内の各ノードで一意である必要があります。

    注記

    NDB 8.0.18 以降では、データノード ID は 145 未満である必要があります。 多数のデータノードを配備する予定の場合は、API ノード (および管理ノード) のノード ID を 144 より大きい値に制限することをお勧めします。 (NDB 8.0.18 より前では、データノード ID でサポートされる最大値は 48 でした。)

    NodeId は、管理ノードを識別するときに使用することが推奨されるパラメータ名です。 エイリアス Id は、NDB Cluster の非常に古いバージョンでこの目的に使用され、下位互換性のために引き続きサポートされています。現在は非推奨になっており、使用時に警告が生成され、NDB Cluster の将来のリリースで削除される可能性があります。

  • ExecuteOnComputer

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 name
    デフォルト [...]
    範囲 ...
    非推奨 Yes (in NDB 7.5)
    再起動タイプ

    S (NDB 8.0.13)

    これは、構成ファイルの [computer] セクションに定義されたいずれかのコンピュータ (ホスト) に設定されている Id を参照します。

    重要

    このパラメータは非推奨であり、将来のリリースで削除される予定です。 かわりに HostName パラメータを使用してください。

  • このノードのノード ID は、明示的にリクエストする接続にのみ指定できます。 ノード ID をリクエストする管理サーバーは、このノード ID を使用できません。 このパラメータは、同じホストで複数の管理サーバーを実行していて、HostName でプロセスを区別するのに十分でない場合に使用できます。 テストで使用するためのものです。

  • HostName

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 name or IP address
    デフォルト [...]
    範囲 ...
    再起動タイプ

    N (NDB 8.0.13)

    このパラメータを指定すると、SQL ノード (API ノード) が配置されるコンピュータのホスト名が定義されます。 ホスト名を指定するには、このパラメータまたは ExecuteOnComputer のいずれかが必要です。

    config.ini ファイルの特定の [mysql] または [api] セクションに HostName または ExecuteOnComputer が指定されていない場合、SQL または API ノードはネットワーク接続を確立できる任意のホストから対応するスロットを使用して管理サーバーホストマシンに接続できます。 これは、ほかに指定されていない場合 localhostHostName として使用されるデータノードのデフォルトの動作とは異なります

  • LocationDomainId

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 integer
    デフォルト 0
    範囲 0 - 16
    再起動タイプ

    クラウド内の特定の「可用性ドメイン」 (可用性ゾーンとも呼ばれる) に SQL またはその他の API ノードを割り当てます。 どのノードがどの可用性ドメインにあるかを NDB に通知することで、次の方法でクラウド環境のパフォーマンスを向上させることができます:

    • リクエストされたデータが同じノードで見つからない場合、読取りは同じ可用性ドメイン内の別のノードに転送できます。

    • 異なる可用性ドメイン内のノード間の通信では、それ以上の手動操作なしで NDB トランスポータ WAN サポートを使用することが保証されています。

    • トランスポータグループ番号は、SQL および他の API ノードが可能な場合は常に同じ可用性ドメイン内のローカルデータノードと通信するように、使用される可用性ドメインに基づくことができます。

    • アービトレータは、データノードが存在しない可用性ドメインから選択することも、そのような可用性ドメインが見つからない場合は 3 番目の可用性ドメインから選択することもできます。

    LocationDomainId は 0 以上 16 以下の整数値を取り、0 がデフォルトです。0 を使用することは、パラメータを未設定のままにすることと同じです。

  • ArbitrationRank

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 0-2
    デフォルト 0
    範囲 0 - 2
    再起動タイプ

    N (NDB 8.0.13)

    このパラメータは、アービトレータとして機能できるノードを定義します。 管理ノードと SQL ノードの両方がアービトレータになることができます。 値 0 は、指定されたノードがアービトレータとして使用されないことを意味します。値 1 は、ノードにアービトレータとしての高い優先度を与えます。値 2 は低い優先度を与えます。 通常の構成では、管理サーバーの ArbitrationRank が 1 (管理ノードのデフォルト) に設定され、各 SQL ノードでは 0 (SQL ノードのデフォルト) に設定されるため、管理サーバーがアービトレータとして使用されます。

    すべての管理および SQL ノードで ArbitrationRank を 0 に設定すると、アービトレーションを完全に無効化できます。 このパラメーラをオーバーライドしてアービトレーションを制御することもできます。そのためには、config.ini グローバル構成ファイルの [ndbd default] セクションに Arbitration パラメータを設定します。

  • ArbitrationDelay

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 milliseconds
    デフォルト 0
    範囲 0 - 4294967039 (0xFFFFFEFF)
    再起動タイプ

    N (NDB 8.0.13)

    このパラメータを 0 (デフォルト) 以外の値に設定すると、アービトレータによるアービトレーションリクエストへのレスポンスは、指定されたミリ秒数遅延されます。 通常、この値を変更する必要はありません。

  • BatchByteSize

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 bytes
    デフォルト 16K
    範囲 1K - 1M
    再起動タイプ

    N (NDB 8.0.13)

    フルテーブルスキャンまたはインデックスの範囲スキャンに変換されるクエリーでは、最良のパフォーマンスを得るため、適切にサイズ調整されたバッチでレコードをフェッチすることが重要です。 レコード数 (BatchSize) とバイト数 (BatchByteSize) の両方で、適切なサイズを設定できます。 実際のバッチサイズは両方のパラメータによって制限されます。

    このパラメータの設定方法によっては、クエリーの実行速度の変化率が 40% を超える可能性があります。

    このパラメータはバイト単位で測定されます。 デフォルト値は 16K です。

  • BatchSize

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 records
    デフォルト 256
    範囲 1 - 992
    再起動タイプ

    N (NDB 8.0.13)

    このパラメータはレコード数で測定され、デフォルトで 256 に設定されます。 最大サイズは 992 です。

  • ExtraSendBufferMemory

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 bytes
    デフォルト 0
    範囲 0 - 4294967039 (0xFFFFFEFF)
    再起動タイプ

    N (NDB 8.0.13)

    このパラメータは、TotalSendBufferMemorySendBufferMemory、またはその両方を使用して設定されたメモリーに加えて割り当てられるトランスポータ送信バッファーメモリーの量を指定します。

  • HeartbeatThreadPriority

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 string
    デフォルト [...]
    範囲 ...
    再起動タイプ

    このパラメータを使用して、管理および API ノードのハートビートスレッドのスケジューリングポリシーと優先度を設定します。 このパラメータを設定するための構文をここに示します。

    HeartbeatThreadPriority = policy[, priority]
    
    policy:
      {FIFO | RR}

    このパラメータを設定するときは、ポリシーを指定する必要があります。 これは、FIFO (先入れ先出し) または RR (ラウンドロビン) のいずれかです。 このあとに、オプションで優先度 (整数) を指定できます。

  • MaxScanBatchSize

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 bytes
    デフォルト 256K
    範囲 32K - 16M
    再起動タイプ

    N (NDB 8.0.13)

    バッチサイズは、各データノードから送信される各バッチのサイズです。 多数のノードから並列で受信される過大なデータ量から MySQL サーバーを保護するため、ほとんどのスキャンは並列で実行されます。このパラメータは、すべてのノードの合計バッチサイズに対する制限を設定します。

    このパラメータのデフォルトの値は 256K バイトです。 最大サイズは 16M バイトです。

  • TotalSendBufferMemory

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 bytes
    デフォルト 0
    範囲 256K - 4294967039 (0xFFFFFEFF)
    再起動タイプ

    N (NDB 8.0.13)

    このパラメータは、すべての構成済みトランスポータ間で共有される送信バッファーメモリーの、このノードに割り当てられるメモリー合計量を決定するために使用されます。

    このパラメータが設定されている場合、許可される最小値は 256KB です。0 はパラメータが設定されていないことを示します。 詳細は、セクション23.3.3.14「NDB Cluster 送信バッファーパラメータの構成」 を参照してください。

  • AutoReconnect

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 boolean
    デフォルト false
    範囲 true, false
    再起動タイプ

    N (NDB 8.0.13)

    このパラメータは、デフォルトで false です。 これによって、切断された API ノード (SQL ノードとして機能する MySQL サーバーを含む) が既存の接続を再使用しようとせずに、クラスタへの新しい接続を強制的に使用するようになります (接続を再使用すると、動的に割り当てられたノード ID を使用するときに問題が発生することがあるため)。 (Bug #45921)

    注記

    このパラメータは、NDB API を使用してオーバーライドできます。 詳細は、Ndb_cluster_connection::set_auto_reconnect() および Ndb_cluster_connection::get_auto_reconnect() を参照してください。

  • DefaultOperationRedoProblemAction

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 enumeration
    デフォルト QUEUE
    範囲 ABORT, QUEUE
    再起動タイプ

    このパラメータは、(RedoOverCommitLimit および RedoOverCommitCounter とともに) Redo ログをディスクにフラッシュする時間が長すぎる場合にデータノードによる操作の処理を制御します。 これは、特定の Redo ログのフラッシュが RedoOverCommitLimit 秒より長い時間をかけて RedoOverCommitCounter 回を超える回数分行われ、保留中のトランザクションが中止されたときに発生します。

    この発生時は、ノードはここに示す DefaultOperationRedoProblemAction の値に応じた 2 つの方法のいずれかで応答できます。

    • ABORT: 中止されたトランザクションに含まれる保留中の操作も中止されます。

    • QUEUE: 中止されたトランザクションに含まれる保留中の操作がキューに入れられ、再試行されます。 これはデフォルトです。 redo ログの領域が不足した場合、つまり P_TAIL_PROBLEM エラーが発生した場合、保留中の操作は中断されます。

  • DefaultHashMapSize

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 buckets
    デフォルト 3840
    範囲 0 - 3840
    再起動タイプ

    N (NDB 8.0.13)

    NDB で使用されるテーブルハッシュマップのサイズは、このパラメータを使用して構成できます。 DefaultHashMapSize には、3 つの値 (0、240、3840) のいずれかを指定できます。 これらの値とその効果について、次の表で説明します。

    表 23.17 DefaultHashMapSize パラメータ値

    説明/効果
    0 クラスタ内のすべてのデータおよび API ノードの中で、このパラメータに設定されたもっとも小さい値を (あれば) 使用します。どのデータまたは API ノードにも設定されていない場合は、デフォルト値を使用します。
    240 古いデフォルトハッシュマップサイズ
    3840 NDB 8.0 でデフォルトで使用されるハッシュマップサイズ

    このパラメータの元の使用目的は、ハッシュマップのサイズが異なる古い NDB Cluster バージョンとの間のアップグレードおよびダウングレードを容易にすることでした。これは、この変更に後方互換性がないためです。 NDB Cluster 8.0 へのアップグレードまたは NDB Cluster 8.0 からのダウングレードでは、これは問題になりません。

  • Wan

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 boolean
    デフォルト false
    範囲 true, false
    再起動タイプ

    N (NDB 8.0.13)

    WAN の TCP 設定をデフォルトとして使用します。

  • ConnectBackoffMaxTime

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 integer
    デフォルト 0
    範囲 0 - 4294967039 (0xFFFFFEFF)
    再起動タイプ

    N (NDB 8.0.13)

    多数の未起動のデータノードがある NDB Cluster では、このパラメータの値を上げて、クラスタ内でまだ機能していないデータノードへの接続試行を回避したり、管理ノードへの高トラフィックを中程度にしたりできます。 API ノードが新しいデータノードに接続されていない場合は、StartConnectBackoffMaxTime パラメータの値が適用されます。それ以外の場合は、ConnectBackoffMaxTime を使用して接続試行間の待機時間の長さ (ミリ秒) が決定されます。

    このパラメータの経過時間を計算する際に、ノードの接続試行に経過する時間は考慮されません。 タイムアウトは、100 ミリ秒の遅延から始まり、約 100 ミリ秒の分解能で適用されます。後続の試行のたびに、ConnectBackoffMaxTime ミリ秒 (最大 100000 ミリ秒 (100 秒)) に達するまでこの期間の長さが倍加されます。

    API ノードがデータノードに接続され、そのノードが (ハートビートメッセージで) ほかのデータノードに接続したことを報告すると、データノードに対する接続試行はこのパラメータの影響を受けなくなり、その後接続されるまで 100 ミリ秒間隔で行われます。 データノードが起動すると、これが発生したことを API ノードに通知するために HeartbeatIntervalDbApi を使用できます。

  • StartConnectBackoffMaxTime

    バージョン (またはそれ以降) NDB 8.0.13
    タイプまたは単位 integer
    デフォルト 0
    範囲 0 - 4294967039 (0xFFFFFEFF)
    再起動タイプ

    N (NDB 8.0.13)

    多数の未起動のデータノードがある NDB Cluster では、このパラメータの値を上げて、クラスタ内でまだ機能していないデータノードへの接続試行を回避したり、管理ノードへの高トラフィックを中程度にしたりできます。 API ノードが新しいデータノードに接続されていない場合は、StartConnectBackoffMaxTime パラメータの値が適用されます。それ以外の場合は、ConnectBackoffMaxTime を使用して接続試行間の待機時間の長さ (ミリ秒) が決定されます。

    このパラメータの経過時間を計算する際に、ノードの接続試行に経過する時間は考慮されません。 タイムアウトは、100 ミリ秒の遅延から始まり、約 100 ミリ秒の分解能で適用されます。後続の試行のたびに、StartConnectBackoffMaxTime ミリ秒 (最大 100000 ミリ秒 (100 秒)) に達するまでこの期間の長さが倍加されます。

    API ノードがデータノードに接続され、そのノードが (ハートビートメッセージで) ほかのデータノードに接続したことを報告すると、データノードに対する接続試行はこのパラメータの影響を受けなくなり、その後接続されるまで 100 ミリ秒間隔で行われます。 データノードが起動すると、これが発生したことを API ノードに通知するために HeartbeatIntervalDbApi を使用できます。

API ノードのデバッグパラメータ.  ApiVerbose 構成パラメータを使用して、特定の API ノードからのデバッグ出力を有効にできます。 このパラメータは整数値を取ります。デフォルトは 0 で、このようなデバッグは無効になります。1 ではクラスタログへのデバッグ出力が有効になり、2 では DBDICT デバッグ出力も追加されます。 (Bug #20638450) DUMP 1229 も参照してください。

次に示すように、mysql クライアントで SHOW STATUS を使用して NDB Cluster SQL ノードとして実行されている MySQL サーバーから情報を取得することもできます:

mysql> SHOW STATUS LIKE 'ndb%';
+-----------------------------+----------------+
| Variable_name               | Value          |
+-----------------------------+----------------+
| Ndb_cluster_node_id         | 5              |
| Ndb_config_from_host        | 198.51.100.112 |
| Ndb_config_from_port        | 1186           |
| Ndb_number_of_storage_nodes | 4              |
+-----------------------------+----------------+
4 rows in set (0.02 sec)

このステートメントの出力に表示されるステータス変数については、セクション23.3.3.9.3「NDB Cluster ステータス変数」を参照してください。

注記

実行中の NDB Cluster の構成に新しい SQL または API ノードを追加するには、新しい[mysqld]または[api]セクションを config.ini ファイル (または、複数の管理サーバーを使用している場合はファイル) に追加したあとで、すべてのクラスタノードのローリング再起動を実行する必要があります。 これは、新しい SQL または API ノードをクラスタに接続する前に実行する必要があります。

新しい SQL または API ノードがクラスタ構成内の以前に使用されていない API スロットを使用してクラスタに接続する場合、クラスタの再起動を実行する必要はありません

再起動のタイプ.  このセクションのパラメータの説明で使用される再起動タイプに関する情報を次のテーブルに示します:

表 23.18 NDB Cluster の再起動タイプ

シンボル 再起動タイプ 説明
N ノード パラメータはローリング再起動を使用して更新できます (セクション23.5.5「NDB Cluster のローリング再起動の実行」 を参照)
S システム このパラメータの変更を有効にするには、すべてのクラスタノードを完全に停止してから再起動する必要があります
I Initial --initial オプションを使用してデータノードを再起動する必要があります


関連キーワード:  NDB, ノード, テーブル, ndbinfo, パラメータ, タイプ, データ, 接続, ndb, 管理