MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
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-startshell>ndbd --ndb-nodeid=4 --nowait-nodes=3 --initial-startshell>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.log
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_
は、エラーが発生する直前に発生した内容を正確に記述したトレースファイルです。
この情報は、NDB Cluster
開発チームによる分析に役立ちます。
node_id_trace.log.trace_id
古いファイルが上書きされる前に作成されるこれらのトレースファイルの数を構成できます。trace_id
は、連続するトレースファイルごとに増分される数値です。
ndb_
は、割り当てられる次のトレースファイル番号を追跡するファイルです。
node_id_trace.log.next
ndb_
は、ndbd
プロセスによるデータ出力が含まれているファイルです。
このファイルは、ndbd
がデーモンとして開始された
(デフォルトの動作)
場合にのみ作成されます。
node_id_out.log
ndb_
には、ndbd
プロセスがデーモンとして開始された場合のプロセス
ID が含まれています。
これは、同じ識別子でノードが起動されるのを防ぐためのロックファイルとしても機能します。
node_id.pid
ndb_
は、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 の既知の制限事項」を参照してください。