ndbd は、NDB Cluster ストレージエンジンを使用してテーブル内のすべてのデータを処理するために使用されるプロセスです。これは、分散型トランザクションの処理、ノードのリカバリ、ディスクでのチェックポイントの実行、オンラインバックアップ、および関連するタスクをデータノードが行うことができるようにするプロセスです。
MySQL Cluster では、一連の ndbd プロセスがデータを処理するために連携して動作します。これらのプロセスは、同じコンピュータ (ホスト) 上または別個のコンピュータ上で実行できます。データノードと Cluster ホストの通信は詳細に構成できます。
次の表には、MySQL Cluster データノードプログラム ndbd に固有のコマンドオプションが含まれています。追加説明が表のあとにあります。ほとんどの MySQL Cluster プログラム (ndbd を含む) に共通するオプションについては、セクション18.4.27「MySQL Cluster プログラムに共通するオプション — MySQL Cluster プログラムに共通するオプション」を参照してください。
表 18.77 この表は、ndbd プログラムのコマンド行オプションについて説明しています
形式 | 説明 | 追加または削除 |
---|---|---|
ndbd の初期起動を実行します (ファイルシステムのクリーニングを含む)。このオプションを使用する前にドキュメントを参照してください |
すべての MySQL 5.6 ベースリリース |
|
ndbd をすぐに起動しません。ndbd は ndb_mgm からの起動するコマンドを待機します |
すべての MySQL 5.6 ベースリリース |
|
ndbd をデーモンとして開始します (デフォルト)。オーバーライドするには --nodaemon を指定します |
すべての MySQL 5.6 ベースリリース |
|
ndbd をデーモンとして開始しません。テストのために提供されています |
すべての MySQL 5.6 ベースリリース |
|
ndbd をフォアグラウンドで実行します。デバッグのために提供されています (--nodaemon の意味を含みます) |
すべての MySQL 5.6 ベースリリース |
|
これらのデータノードが起動されるのを待機しません (ノード ID のカンマ区切りのリストを取ります)。--ndb-nodeid も使用する必要があります。 |
すべての MySQL 5.6 ベースリリース |
|
部分的な初期起動を実行します (--nowait-nodes が必要です) |
すべての MySQL 5.6 ベースリリース |
|
ローカルバインドアドレス |
すべての MySQL 5.6 ベースリリース |
|
データノードプロセスを Windows サービスとしてインストールするために使用します。Windows 以外のプラットフォームには該当しません。 |
すべての MySQL 5.6 ベースリリース |
|
以前 Windows サービスとしてインストールされたデータノードプロセスを削除するために使用します。Windows 以外のプラットフォームには該当しません。 |
すべての MySQL 5.6 ベースリリース |
|
管理サーバーへの接続を試行する回数。無限に試行する場合は -1 を設定します |
すべての MySQL 5.6 ベースリリース |
|
管理サーバーへの各接続試行間に待機する時間 (秒単位) |
すべての MySQL 5.6 ベースリリース |
これらのすべてのオプションはこのプログラムのマルチスレッドバージョン (ndbmtd) にも適用され、「ndbd」 を 「ndbmtd」 に置き換えることができます (このセクションで後者が出てくる場合)。
-
コマンド行形式 --bind-address=name
型 文字列 デフォルト ndbd が特定のネットワークインタフェース (ホスト名または IP アドレス) にバインドされます。このオプションにはデフォルト値はありません。
-
コマンド行形式 --daemon
型 ブール デフォルト TRUE
ndbd または ndbmtd にデーモンプロセスとして実行するように指示します。これはデフォルトの動作です。
--nodaemon
を使用すると、プロセスがデーモンとして実行されなくなります。Windows プラットフォームで ndbd または ndbmtd を実行している場合、このオプションは効果がありません。
-
コマンド行形式 --nodaemon
型 ブール デフォルト FALSE
ndbd または ndbmtd がデーモンプロセスとして実行されなくなります。このオプションは
--daemon
オプションをオーバーライドします。これは、バイナリをデバッグするときに、出力を画面にリダイレクトする場合に便利です。Windows での ndbd および ndbmtd のデフォルト動作はフォアグラウンドでの実行であり、Windows プラットフォームではこのオプションは効果がなく、必要ありません。
-
コマンド行形式 --foreground
型 ブール デフォルト FALSE
主にデバッグのために、ndbd または ndbmtd がフォアグラウンドプロセスとして実行されます。このオプションは
--nodaemon
オプションの意味を含みます。Windows プラットフォームで ndbd または ndbmtd を実行している場合、このオプションは効果がありません。
-
コマンド行形式 --initial
型 ブール デフォルト FALSE
ndbd に初期起動を実行するように指示します。初期起動によって、以前の ndbd のインスタンスでリカバリのために作成されたファイルが消去されます。また、リカバリログファイルが再作成されます。一部のオペレーティングシステムでは、この処理にかなり長い時間がかかります。
--initial
を指定した起動は、ndbd プロセスを非常に特殊な状況で起動するときにのみ使用します。これは、このオプションを指定すると、MySQL Cluster ファイルシステムからすべてのファイルが削除され、すべての Redo ログファイルが再作成されるためです。それらの状況を次に示します。ファイルの内容が変更されたソフトウェアアップグレードを実行する場合。
新しいバージョンの ndbd でノードを再起動する場合。
何かの理由でノードまたはシステムの再起動が繰り返し失敗する場合の最後の手段として。この場合、データファイルが破壊されるため、このノードはデータのリストアに使用できなくなります。
このオプションを使用すると、
StartPartialTimeout
およびStartPartitionedTimeout
構成パラメータの効果がなくなります。重要このオプションは、次のタイプのファイルには影響しません。
影響を受けるノードによってすでに作成されているバックアップファイル
MySQL Cluster ディスクデータファイル (セクション18.5.12「MySQL Cluster ディスクデータテーブル」を参照してください)。
このオプションは、すでに実行されているデータノードから起動 (または再起動) されたばかりのデータノードによるデータのリカバリにも影響しません。このデータのリカバリは自動的に行われ、正常に実行されている MySQL Cluster でユーザーが操作を行う必要はありません。
クラスタを最初に起動するとき (つまり、データノードファイルが作成される前) にこのオプションを使用することはできますが、そうする必要はありません。
-
コマンド行形式 --initial-start
型 ブール デフォルト 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
オプションとこのオプションを混同しないでください。 -
--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 が起動されるのを待機しません。 -
コマンド行形式 --nostart
型 ブール デフォルト FALSE
ndbd に自動的に起動しないように指示します。このオプションを使用すると、ndbd は管理サーバーに接続してそこから構成データを取得し、通信オブジェクトを初期化します。ただし、管理サーバーによってそうするように明示的に要求されるまで、実行エンジンを実際に起動しません。これは、管理クライアントで適切な
START
コマンドを発行することによって実現されます (セクション18.5.2「MySQL Cluster 管理クライアントのコマンド」を参照してください)。 -
コマンド行形式 --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 以外のプラットフォームでは効果がありません。 -
コマンド行形式 --remove[=name]
プラットフォーム固有 Windows 型 文字列 デフォルト ndbd
以前に Windows サービスとしてインストールされた ndbd プロセスを削除します。必要に応じて、アンインストールするサービスの名前を指定できます。設定しない場合、サービス名は
ndbd
にデフォルト設定されます。--remove
オプションは、Windows 以外のプラットフォームでは効果がありません。 -
コマンド行形式 --connect-retries=#
型 数値 デフォルト 12
最小値 -1
最大値 65535
データノードが起動時に管理サーバーに接続を試みる回数を指定します。このオプションに -1 を設定すると、データノードが無限に接続を試みます。デフォルトは 12 回の試行です。各試行の間に待機する時間は、
--connect-delay
オプションによって制御されます。 -
コマンド行形式 --connect-delay=#
型 数値 デフォルト 5
最小値 0
最大値 3600
起動時に管理サーバーへの各接続試行の間に待機する時間を決定します (試行の間の時間は
--connect-retries
オプションによって制御されます)。デフォルトは 5 回の試行です。このオプションは MySQL Cluster NDB 7.2.9 で追加されました。
ndbd は、config.ini
構成ファイルの DataDir
で指定されているディレクトリに配置される一連のログファイルを生成します。
これらのログファイルを次に一覧します。node_id
はノードの一意識別子です。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_
は、エラーが発生する直前に発生した事象を示すトレースファイルです。この情報は MySQL 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"
これについての詳細は、セクション18.3.2.3「MySQL Cluster の接続文字列」を参照してください。セクション18.4.27「MySQL Cluster プログラムに共通するオプション — MySQL Cluster プログラムに共通するオプション」では、ndbd で使用できるその他のコマンド行オプションについて説明しています。データノード構成パラメータについては、セクション18.3.2.6「MySQL Cluster データノードの定義」を参照してください。
ndbd が開始されると、実際には 2 つのプロセスが開始されます。最初のプロセスは「エンジェルプロセス」と呼ばれ、その唯一の役割は実行プロセスが完了したときにそれを検出し、ndbd プロセスを再起動することです (そのように構成されている場合)。このため、UNIX の kill コマンドを使用して ndbd を強制終了しようとする場合は、両方のプロセスを強制終了する必要があります (エンジェルプロセスが最初)。ndbd プロセスを終了させるための推奨される方法は、管理クライアントを使用してそこからプロセスを停止することです。
実行プロセスは、データの読み取り、書き込み、スキャン、およびほかのすべてのアクティビティーに 1 つのスレッドを使用します。数千の同時アクションを容易に処理できるように、このスレッドは非同期に実装されます。また、監視スレッドは実行スレッドが無限ループでハングアップしないように管理します。スレッドのプールによってファイル I/O が処理され、各スレッドは 1 つのオープンファイルを処理できます。スレッドは ndbd プロセスのトランスポーターによるトランスポーター接続に使用することもできます。多数の操作 (更新を含む) を実行するマルチプロセッサーシステムの場合、ndbd プロセスは最大 2 つの CPU を使用できます (許可されている場合)。
多数の CPU を持つマシンの場合は、異なるノードグループに属する複数の ndbd プロセスを使用できます。ただし、そのような構成はまだ実験的と見なされ、MySQL 5.6 の本番設定ではサポートされません。セクション18.1.6「MySQL Cluster の既知の制限」を参照してください。