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


MySQL 8.0 リファレンスマニュアル  /  ...  /  ndbd — NDB Cluster データノードデーモン

23.4.1 ndbd — NDB Cluster データノードデーモン

ndbd は、NDB Cluster ストレージエンジンを使用してテーブル内のすべてのデータを処理するために使用されるプロセスです。 これは、分散型トランザクションの処理、ノードのリカバリ、ディスクでのチェックポイントの実行、オンラインバックアップ、および関連するタスクをデータノードが行うことができるようにするプロセスです。

NDB Cluster では、一連の ndbd プロセスが連携してデータを処理します。 これらのプロセスは、同じコンピュータ (ホスト) 上または別個のコンピュータ上で実行できます。 データノードと Cluster ホストの通信は詳細に構成できます。

次のテーブルに、NDB Cluster データノードプログラム ndbd に固有のコマンドオプションを示します。 追加説明が表のあとにあります。 ほとんどの NDB Cluster プログラム (ndbd を含む) に共通のオプションについては、セクション23.4.32「NDB Cluster プログラムに共通のオプション — NDB Cluster プログラムに共通のオプション」 を参照してください。

表 23.24 プログラムで使用されるコマンドライン・オプション ndbd

形式 説明 追加、非推奨、または削除された

--bind-address=name

ローカルバインドアドレス

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--connect-delay=#

管理サーバーへの接続を試行する間隔 (秒)。0 は試行の間待機しないことを意味

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--connect-retries=#

中止する前に接続を再試行する回数を設定します。0 は 1 回の試行のみを意味し、再試行は行われません

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--connect-retry-delay=#

管理サーバーへの接続を試行する間隔 (秒)。0 は試行の間待機しないことを意味

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--daemon,

-d

ndbd をデーモンとして開始します (デフォルト)。オーバーライドするには --nodaemon を指定します

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--foreground

ndbd をフォアグラウンドで実行します。デバッグのために提供されています (--nodaemon の意味を含みます)

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--initial

ndbd の初期起動 (ファイルシステムのクリーンアップを含む) を実行します。このオプションを使用する前にドキュメントを参照してください

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--initial-start

部分的な初期起動を実行します (--nowait-nodes が必要です)

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--install[=name]

データノードプロセスを Windows サービスとしてインストールするために使用します。他のプラットフォームには適用されません

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--logbuffer-size=#

ログバッファのサイズを制御します。多くのログメッセージを生成してデバッグする場合に使用します。通常の操作にはデフォルトで十分です

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--nodaemon

ndbd をデーモンとして開始しません。テストのために提供されています

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--nostart,

-n

ndbd をすぐに起動しないでください。ndbd はコマンドが ndb_mgm から起動するまで待機

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--nowait-nodes=list

これらのデータノードが起動するまで待機しないでください (ノード ID のコンマ区切りリストを取ります)。--ndb-nodeid が必要です

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--remove[=name]

以前に Windows サービスとしてインストールされたデータノードプロセスを削除するために使用します。他のプラットフォームには適用されません

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--verbose,

-v

追加のデバッグ情報をノードログに書き込みます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)


注記

これらのオプションはすべて、このプログラム (ndbmtd) のマルチスレッドバージョンにも適用され、このセクションで後者が発生した場合は常に、ndbd のかわりに ndbmtd を使用できます。

  • --bind-address

    コマンド行形式 --bind-address=name
    文字列
    デフォルト値

    ndbd が特定のネットワークインタフェース (ホスト名または IP アドレス) にバインドされます。 このオプションにはデフォルト値はありません。

  • --connect-delay=#

    コマンド行形式 --connect-delay=#
    非推奨 はい
    数値
    デフォルト値 5
    最小値 0
    最大値 3600

    起動時に管理サーバーへの接続を試行する間隔を決定します (試行回数は --connect-retries オプションによって制御されます)。 デフォルトは 5 秒です。

    このオプションは非推奨であり、NDB Cluster の将来のリリースで削除される可能性があります。 かわりに --connect-retry-delay を使用してください。

  • --connect-retries=#

    コマンド行形式 --connect-retries=#
    数値
    デフォルト値 12
    最小値 0
    最大値 65535

    中止する前に接続を再試行する回数を設定します。0 は 1 回の試行のみを意味し、再試行は行われません。 デフォルトは 12 回の試行です。 試行間の待機時間は、--connect-retry-delay オプションによって制御されます。

  • --connect-retry-delay=#

    コマンド行形式 --connect-retry-delay=#
    数値
    デフォルト値 5
    最小値 0
    最大値 4294967295

    起動時に管理サーバーへの各接続試行の間に待機する時間を決定します (試行の間の時間は --connect-retries オプションによって制御されます)。 デフォルトは 5 秒です。

    このオプションは --connect-delay オプションの代わりに使用され、現在は非推奨であり、NDB Cluster の将来のリリースで削除される可能性があります。

  • --daemon-d

    コマンド行形式 --daemon
    Boolean
    デフォルト値 TRUE

    ndbd または ndbmtd にデーモンプロセスとして実行するように指示します。 これはデフォルトの動作です。--nodaemon を使用すると、プロセスがデーモンとして実行されなくなります。

    Windows プラットフォームで ndbd または ndbmtd を実行している場合、このオプションは効果がありません。

  • --foreground

    コマンド行形式 --foreground
    Boolean
    デフォルト値 FALSE

    主にデバッグのために、ndbd または ndbmtd がフォアグラウンドプロセスとして実行されます。 このオプションは --nodaemon オプションの意味を含みます。

    Windows プラットフォームで ndbd または ndbmtd を実行している場合、このオプションは効果がありません。

  • --initial

    コマンド行形式 --initial
    Boolean
    デフォルト値 FALSE

    ndbd に初期起動を実行するように指示します。 初期起動によって、以前の ndbd のインスタンスでリカバリのために作成されたファイルが消去されます。 また、リカバリログファイルが再作成されます。 一部のオペレーティングシステムでは、このプロセスにかなりの時間がかかる場合があります。

    --initial の起動は、非常に特殊な状況下で ndbd プロセスを起動するときにのみを使用します。これは、このオプションによって NDB Cluster ファイルシステムからすべてのファイルが削除され、すべての redo ログファイルが再作成されるためです。 それらの状況を次に示します。

    • ファイルの内容が変更されたソフトウェアアップグレードを実行する場合。

    • 新しいバージョンの ndbd でノードを再起動する場合。

    • 何かの理由でノードまたはシステムの再起動が繰り返し失敗する場合の最後の手段として。 この場合、データファイルが破壊されるため、このノードはデータのリストアに使用できなくなります。

    警告

    最終的なデータ損失の可能性を回避するために、--initial オプションを StopOnError = 0 とともに使用しないことをお薦めします。 かわりに、クラスタの起動後にのみ config.iniStopOnError を 0 に設定し、データノードを通常どおり (--initial オプションなしで) 再起動します。 この問題の詳細は、StopOnError パラメータの説明を参照してください。 (Bug #24945638)

    このオプションを使用すると、StartPartialTimeout および StartPartitionedTimeout 構成パラメータの効果がなくなります。

    重要

    このオプションは、影響を受けるノードによってすでに作成されているバックアップファイルには影響しません。

    NDB 8.0.21 より前では、--initial オプションもディスクデータファイルに影響を与えませんでした。 NDB 8.0.21 以降では、このオプションを使用してクラスタの初期再起動を実行すると、「ディスクデータ」テーブルスペースに関連付けられているすべてのデータファイルと、このデータノードに以前存在していたログファイルシステムに関連付けられているすべての Undo ログファイルが削除されます (セクション23.5.10「NDB Cluster ディスクデータテーブル」 を参照)。

    このオプションは、すでに実行されているデータノードから起動 (または再起動) しているデータノードによるデータの回復にも影響しません (初期再起動の一環として --initial でも起動された場合を除く)。 このデータの回復は自動的に行われ、正常に実行されている NDB Cluster でのユーザーの介入は必要ありません。

    クラスタを最初に起動するとき (つまり、データノードファイルが作成される前) にこのオプションを使用することはできますが、そうする必要はありません

  • --initial-start

    コマンド行形式 --initial-start
    Boolean
    デフォルト値 FALSE

    このオプションは、クラスタを部分的に初期起動するときに使用します。 各ノードは、このオプションおよび --nowait-nodes を指定して起動してください。

    データノードの ID が 2、3、4、および 5 である 4 ノードクラスタがあり、ノード 2、4、および 5 のみを使用して (つまり、ノード 3 を除外して) 部分的に初期起動を実行するとします。

    shell> ndbd --ndb-nodeid=2 --nowait-nodes=3 --initial-start
    shell> ndbd --ndb-nodeid=4 --nowait-nodes=3 --initial-start
    shell> ndbd --ndb-nodeid=5 --nowait-nodes=3 --initial-start

    このオプションを使用する場合は、--ndb-nodeid オプションを指定して起動するデータノードのノード ID も指定する必要があります。

    重要

    複数の管理サーバーで構成されたクラスタをすべての管理サーバーがオンラインでなくても起動できるようにするために使用できる ndb_mgmd--nowait-nodes オプションとこのオプションを混同しないでください。

  • --install[=name]

    コマンド行形式 --install[=name]
    プラットフォーム固有 Windows
    文字列
    デフォルト値 ndbd

    ndbd が Windows サービスとしてインストールされます。 必要に応じて、サービス名を指定できます。設定しない場合、サービス名は ndbd にデフォルト設定されます。 ほかの ndbd プログラムオプションは my.ini または my.cnf 構成ファイルに指定することが推奨されますが、--install と一緒に使用できます。 ただし、そのような場合、Windows サービスのインストールが成功するには、--install オプションを最初に指定してから、ほかのオプションを指定する必要があります。

    一般的に、このオプションを --initial オプションと一緒に使用することはお勧めしません。それにより、サービスが停止および開始されるたびにデータノードファイルシステムが消去および再作成されるためです。 データノードの起動に影響するほかの ndbd オプション (--initial-start--nostart、および --nowait-nodes を含む) を --install と一緒に使用する場合は、それを行うことを十分に理解し、起こり得る結果に対して十分に準備していることをしっかりと確認してください。

    --install オプションは、Windows 以外のプラットフォームでは効果がありません。

  • --logbuffer-size=#

    コマンド行形式 --logbuffer-size=#
    Integer
    デフォルト値 32768
    最小値 2048
    最大値 4294967295

    データノードのログバッファーのサイズを設定します。 大量の追加ロギングを使用してデバッグする場合、ログメッセージが多すぎると、ログバッファの領域が不足する可能性があります。この場合、一部のログメッセージが失われる可能性があります。 これは、通常の操作中には発生しません。

  • --nodaemon

    コマンド行形式 --nodaemon
    Boolean
    デフォルト値 FALSE

    ndbd または ndbmtd がデーモンプロセスとして実行されなくなります。 このオプションは --daemon オプションをオーバーライドします。 これは、バイナリをデバッグするときに、出力を画面にリダイレクトする場合に便利です。

    Windows での ndbd および ndbmtd のデフォルト動作はフォアグラウンドでの実行であり、Windows プラットフォームではこのオプションは効果がなく、必要ありません。

  • --nostart, -n

    コマンド行形式 --nostart
    Boolean
    デフォルト値 FALSE

    ndbd に自動的に起動しないように指示します。 このオプションを使用すると、ndbd は管理サーバーに接続してそこから構成データを取得し、通信オブジェクトを初期化します。 ただし、管理サーバーによってそうするように明示的に要求されるまで、実行エンジンを実際に起動しません。 これは、管理クライアントで適切な START コマンドを発行することによって実現されます (セクション23.5.1「NDB Cluster 管理クライアントのコマンド」を参照してください)。

  • --nowait-nodes=node_id_1[, node_id_2[, ...]]

    コマンド行形式 --nowait-nodes=list
    文字列
    デフォルト値

    このオプションは、起動前にクラスタが待機しないデータノードのリストを取ります。

    これは、パーティション化された状態のクラスタを起動するために使用できます。 たとえば、4 ノードクラスタで実行されているデータノード (ノード 2、3、4、および 5) の半分のデータノードのみでクラスタを起動するには、--nowait-nodes=3,5 を指定して各 ndbd プロセスを開始します。 この場合、クラスタはノード 2 およびノード 4 が接続するとすぐに起動し、ノード 3 およびノード 5 が接続するのを (接続していない場合) StartPartitionedTimeout ミリ秒間待機しません

    前の例と同じクラスタを 1 つの ndbd を除外して起動する場合 (たとえば、ノード 3 のホストマシンでハードウェアの障害が発生している場合) は、--nowait-nodes=3 を指定してノード 2、4、および 5 を 起動します。 その後、ノード 2、4 および 5 が接続されるとすぐにクラスタが起動し、ノード 3 が起動するのを待機しません。

  • --remove[=name]

    コマンド行形式 --remove[=name]
    プラットフォーム固有 Windows
    文字列
    デフォルト値 ndbd

    以前に Windows サービスとしてインストールされた ndbd プロセスを削除します。 必要に応じて、アンインストールするサービスの名前を指定できます。設定しない場合、サービス名は ndbd にデフォルト設定されます。

    --remove オプションは、Windows 以外のプラットフォームでは効果がありません。

  • --verbose, -v

    追加のデバッグ出力がノードログに書き込まれます。

    NODELOG DEBUG ON および NODELOG DEBUG OFF を使用して、データノードの実行中にこの追加ロギングを有効または無効にすることもできます。

ndbd は、config.ini 構成ファイルの DataDir で指定されているディレクトリに配置される一連のログファイルを生成します。

これらのログファイルを次に示します。node_id は、ノードの一意の識別子です。 たとえば、ndb_2_error.log はノード ID が 2 のデータノードによって生成されたエラーログです。

  • ndb_node_id_error.log は、参照先の ndbd プロセスで発生したすべてのクラッシュのレコードを含むファイルです。 このファイルの各レコードには、簡単なエラー文字列、およびこのクラッシュのトレースファイルへの参照が含まれています。 このファイルの一般的なエントリを次に示します。

    Date/Time: Saturday 30 July 2004 - 00:20:01
    Type of error: error
    Message: Internal program error (failed ndbrequire)
    Fault ID: 2341
    Problem data: DbtupFixAlloc.cpp
    Object of reference: DBTUP (Line: 173)
    ProgramName: NDB Kernel
    ProcessID: 14909
    TraceFile: ndb_2_trace.log.2
    ***EOM***

    データノードプロセスが予期せずに停止されたときに生成される可能性がある ndbd の終了コードおよびメッセージのリストは、Data Node Error Messagesにあります。

    重要

    このエラーログファイルの最後のエントリが最新のエントリであるとはかぎりません (その可能性もあまりありません)。 このエラーログのエントリは、時系列順で一覧されずndb_node_id_trace.log.next ファイル (次を参照してください) で決定されるトレースファイルの順序に対応しています。 エラーログのエントリは、このように循環的に上書きされ、順次的ではありません。

  • ndb_node_id_trace.log.trace_id は、エラーが発生する直前に発生した内容を正確に記述したトレースファイルです。 この情報は、NDB Cluster 開発チームによる分析に役立ちます。

    古いファイルが上書きされる前に作成されるこれらのトレースファイルの数を構成できます。trace_id は、連続するトレースファイルごとに増分される数値です。

  • ndb_node_id_trace.log.next は、割り当てられる次のトレースファイル番号を追跡するファイルです。

  • ndb_node_id_out.log は、ndbd プロセスによるデータ出力が含まれているファイルです。 このファイルは、ndbd がデーモンとして開始された (デフォルトの動作) 場合にのみ作成されます。

  • ndb_node_id.pid には、ndbd プロセスがデーモンとして開始された場合のプロセス ID が含まれています。 これは、同じ識別子でノードが起動されるのを防ぐためのロックファイルとしても機能します。

  • ndb_node_id_signal.log は、ndbd のデバッグバージョンでのみ使用されるファイルであり、ndbd プロセスのそれらのデータのすべての受信、送信、および内部メッセージをトレースできます。

NFS を使用してマウントしたディレクトリは使用しないことをお勧めします。一部の環境では、プロセスが終了しても .pid ファイルに対するロックが有効なままとなる問題が発生することがあるためです。

ndbd を開始する場合、管理サーバーのホスト名およびそれが待機するポートも指定する必要があることがあります。 必要に応じて、プロセスが使用するノード ID を指定することもできます。

shell> ndbd --connect-string="nodeid=2;host=ndb_mgmd.mysql.com:1186"

これについての詳細は、セクション23.3.3.3「NDB Cluster 接続文字列」を参照してください。セクション23.4.32「NDB Cluster プログラムに共通のオプション — NDB Cluster プログラムに共通のオプション」では、ndbd で使用できるその他のコマンド行オプションについて説明しています。 データノード構成パラメータについては、セクション23.3.3.6「NDB Cluster データノードの定義」を参照してください。

ndbd が開始されると、実際には 2 つのプロセスが開始されます。 最初のプロセスはエンジェルプロセスと呼ばれ、その唯一の役割は実行プロセスが完了したときにそれを検出し、ndbd プロセスを再起動することです (そのように構成されている場合)。 このため、UNIX の kill コマンドを使用して ndbd を強制終了しようとする場合は、両方のプロセスを強制終了する必要があります (エンジェルプロセスが最初)。 ndbd プロセスを終了させるための推奨される方法は、管理クライアントを使用してそこからプロセスを停止することです。

実行プロセスは、データの読み取り、書き込み、スキャン、およびほかのすべてのアクティビティーに 1 つのスレッドを使用します。 数千の同時アクションを容易に処理できるように、このスレッドは非同期に実装されます。 また、監視スレッドは実行スレッドが無限ループでハングアップしないように管理します。 スレッドのプールによってファイル I/O が処理され、各スレッドは 1 つのオープンファイルを処理できます。 スレッドは ndbd プロセスのトランスポーターによるトランスポーター接続に使用することもできます。 多数の操作 (更新を含む) を実行するマルチプロセッサーシステムの場合、ndbd プロセスは最大 2 つの CPU を使用できます (許可されている場合)。

多数の CPU を持つマシンの場合は、異なるノードグループに属する複数の ndbd プロセスを使用できます。ただし、そのような構成はまだ実験的と見なされ、MySQL 8.0 の本番設定ではサポートされません。 セクション23.1.7「NDB Cluster の既知の制限事項」を参照してください。


関連キーワード:  NDB, テーブル, ノード, ndbd, ndbinfo, ndb, データ, 起動, プロセス, 実行