ndbd は、NDB Cluster ストレージエンジンを使用してテーブル内のすべてのデータを処理するために使用されるプロセスです。 これは、分散型トランザクションの処理、ノードのリカバリ、ディスクでのチェックポイントの実行、オンラインバックアップ、および関連するタスクをデータノードが行うことができるようにするプロセスです。
NDB Cluster では、一連の ndbd プロセスが連携してデータを処理します。 これらのプロセスは、同じコンピュータ (ホスト) 上または別個のコンピュータ上で実行できます。 データノードと Cluster ホストの通信は詳細に構成できます。
次のテーブルに、NDB Cluster データノードプログラム ndbd に固有のコマンドオプションを示します。 追加説明が表のあとにあります。 ほとんどの NDB Cluster プログラム (ndbd を含む) に共通のオプションについては、セクション23.4.32「NDB Cluster プログラムに共通のオプション — NDB Cluster プログラムに共通のオプション」 を参照してください。
表 23.24 プログラムで使用されるコマンドライン・オプション ndbd
形式 | 説明 | 追加、非推奨、または削除された |
---|---|---|
ローカルバインドアドレス | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
管理サーバーへの接続を試行する間隔 (秒)。0 は試行の間待機しないことを意味 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
中止する前に接続を再試行する回数を設定します。0 は 1 回の試行のみを意味し、再試行は行われません | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
管理サーバーへの接続を試行する間隔 (秒)。0 は試行の間待機しないことを意味 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
ndbd をデーモンとして開始します (デフォルト)。オーバーライドするには --nodaemon を指定します | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
ndbd をフォアグラウンドで実行します。デバッグのために提供されています (--nodaemon の意味を含みます) | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
ndbd の初期起動 (ファイルシステムのクリーンアップを含む) を実行します。このオプションを使用する前にドキュメントを参照してください | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
部分的な初期起動を実行します (--nowait-nodes が必要です) | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
データノードプロセスを Windows サービスとしてインストールするために使用します。他のプラットフォームには適用されません | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
ログバッファのサイズを制御します。多くのログメッセージを生成してデバッグする場合に使用します。通常の操作にはデフォルトで十分です | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
ndbd をデーモンとして開始しません。テストのために提供されています | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
ndbd をすぐに起動しないでください。ndbd はコマンドが ndb_mgm から起動するまで待機 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
これらのデータノードが起動するまで待機しないでください (ノード ID のコンマ区切りリストを取ります)。--ndb-nodeid が必要です | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
以前に Windows サービスとしてインストールされたデータノードプロセスを削除するために使用します。他のプラットフォームには適用されません | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
追加のデバッグ情報をノードログに書き込みます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
これらのオプションはすべて、このプログラム (ndbmtd) のマルチスレッドバージョンにも適用され、このセクションで後者が発生した場合は常に、「ndbd」 のかわりに 「ndbmtd」 を使用できます。
-
コマンド行形式 --bind-address=name
型 文字列 デフォルト値 ndbd が特定のネットワークインタフェース (ホスト名または IP アドレス) にバインドされます。 このオプションにはデフォルト値はありません。
-
コマンド行形式 --connect-delay=#
非推奨 はい 型 数値 デフォルト値 5
最小値 0
最大値 3600
起動時に管理サーバーへの接続を試行する間隔を決定します (試行回数は
--connect-retries
オプションによって制御されます)。 デフォルトは 5 秒です。このオプションは非推奨であり、NDB Cluster の将来のリリースで削除される可能性があります。 かわりに
--connect-retry-delay
を使用してください。 -
コマンド行形式 --connect-retries=#
型 数値 デフォルト値 12
最小値 0
最大値 65535
中止する前に接続を再試行する回数を設定します。0 は 1 回の試行のみを意味し、再試行は行われません。 デフォルトは 12 回の試行です。 試行間の待機時間は、
--connect-retry-delay
オプションによって制御されます。 -
コマンド行形式 --connect-retry-delay=#
型 数値 デフォルト値 5
最小値 0
最大値 4294967295
起動時に管理サーバーへの各接続試行の間に待機する時間を決定します (試行の間の時間は
--connect-retries
オプションによって制御されます)。 デフォルトは 5 秒です。このオプションは
--connect-delay
オプションの代わりに使用され、現在は非推奨であり、NDB Cluster の将来のリリースで削除される可能性があります。 -
コマンド行形式 --daemon
型 Boolean デフォルト値 TRUE
ndbd または ndbmtd にデーモンプロセスとして実行するように指示します。 これはデフォルトの動作です。
--nodaemon
を使用すると、プロセスがデーモンとして実行されなくなります。Windows プラットフォームで ndbd または ndbmtd を実行している場合、このオプションは効果がありません。
-
コマンド行形式 --foreground
型 Boolean デフォルト値 FALSE
主にデバッグのために、ndbd または ndbmtd がフォアグラウンドプロセスとして実行されます。 このオプションは
--nodaemon
オプションの意味を含みます。Windows プラットフォームで ndbd または ndbmtd を実行している場合、このオプションは効果がありません。
-
コマンド行形式 --initial
型 Boolean デフォルト値 FALSE
ndbd に初期起動を実行するように指示します。 初期起動によって、以前の ndbd のインスタンスでリカバリのために作成されたファイルが消去されます。 また、リカバリログファイルが再作成されます。 一部のオペレーティングシステムでは、このプロセスにかなりの時間がかかる場合があります。
--initial
の起動は、非常に特殊な状況下で ndbd プロセスを起動するときにのみを使用します。これは、このオプションによって NDB Cluster ファイルシステムからすべてのファイルが削除され、すべての redo ログファイルが再作成されるためです。 それらの状況を次に示します。ファイルの内容が変更されたソフトウェアアップグレードを実行する場合。
新しいバージョンの ndbd でノードを再起動する場合。
何かの理由でノードまたはシステムの再起動が繰り返し失敗する場合の最後の手段として。 この場合、データファイルが破壊されるため、このノードはデータのリストアに使用できなくなります。
警告最終的なデータ損失の可能性を回避するために、
--initial
オプションをStopOnError = 0
とともに使用しないことをお薦めします。 かわりに、クラスタの起動後にのみconfig.ini
でStopOnError
を 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
型 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]
プラットフォーム固有 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=#
型 Integer デフォルト値 32768
最小値 2048
最大値 4294967295
データノードのログバッファーのサイズを設定します。 大量の追加ロギングを使用してデバッグする場合、ログメッセージが多すぎると、ログバッファの領域が不足する可能性があります。この場合、一部のログメッセージが失われる可能性があります。 これは、通常の操作中には発生しません。
-
コマンド行形式 --nodaemon
型 Boolean デフォルト値 FALSE
ndbd または ndbmtd がデーモンプロセスとして実行されなくなります。 このオプションは
--daemon
オプションをオーバーライドします。 これは、バイナリをデバッグするときに、出力を画面にリダイレクトする場合に便利です。Windows での ndbd および ndbmtd のデフォルト動作はフォアグラウンドでの実行であり、Windows プラットフォームではこのオプションは効果がなく、必要ありません。
-
コマンド行形式 --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]
プラットフォーム固有 Windows 型 文字列 デフォルト値 ndbd
以前に Windows サービスとしてインストールされた ndbd プロセスを削除します。 必要に応じて、アンインストールするサービスの名前を指定できます。設定しない場合、サービス名は
ndbd
にデフォルト設定されます。--remove
オプションは、Windows 以外のプラットフォームでは効果がありません。 -
追加のデバッグ出力がノードログに書き込まれます。
NODELOG DEBUG ON
およびNODELOG DEBUG OFF
を使用して、データノードの実行中にこの追加ロギングを有効または無効にすることもできます。
ndbd は、config.ini
構成ファイルの
DataDir
で指定されているディレクトリに配置される一連のログファイルを生成します。
これらのログファイルを次に示します。node_id
は、ノードの一意の識別子です。
たとえば、ndb_2_error.log
はノード
ID が 2
のデータノードによって生成されたエラーログです。
-
ndb_
は、参照先の ndbd プロセスで発生したすべてのクラッシュのレコードを含むファイルです。 このファイルの各レコードには、簡単なエラー文字列、およびこのクラッシュのトレースファイルへの参照が含まれています。 このファイルの一般的なエントリを次に示します。node_id
_error.logDate/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_
は、エラーが発生する直前に発生した内容を正確に記述したトレースファイルです。 この情報は、NDB Cluster 開発チームによる分析に役立ちます。node_id
_trace.log.trace_id
古いファイルが上書きされる前に作成されるこれらのトレースファイルの数を構成できます。
trace_id
は、連続するトレースファイルごとに増分される数値です。 ndb_
は、割り当てられる次のトレースファイル番号を追跡するファイルです。node_id
_trace.log.nextndb_
は、ndbd プロセスによるデータ出力が含まれているファイルです。 このファイルは、ndbd がデーモンとして開始された (デフォルトの動作) 場合にのみ作成されます。node_id
_out.logndb_
には、ndbd プロセスがデーモンとして開始された場合のプロセス ID が含まれています。 これは、同じ識別子でノードが起動されるのを防ぐためのロックファイルとしても機能します。node_id
.pidndb_
は、ndbd のデバッグバージョンでのみ使用されるファイルであり、ndbd プロセスのそれらのデータのすべての受信、送信、および内部メッセージをトレースできます。node_id
_signal.log
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 の既知の制限事項」を参照してください。