ndbd は NDB Cluster ストレージ エンジンを使用してテーブルのすべてのデータの処理に使用されるプロセスです。これは配布されたトランザクションの処理、ノードのリカバリ、オンラインバックアップ、および関連のタスクを実行するためのデータ ノードに権限を与えるプロセスです。
MySQL Cluster では、一連の ndbd プロセスがデータの処理に協力します。これらのプロセスは同じコンピュータ上あるいは異なるコンピュータ上で実行できます。データ ノードと Cluster ホストとの通信は完全に設定できます。
ndbd generates
は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***
注:エラーログの最後のエントリは必ずしも最新のものでない
(そうも思われない)
ことを忘れずの憶えておいてください。エラーログのエントリは年代順の入力では
ありません。むしろ、ndb_
ファイル (以下参照)
で決められたようにトレース
ファイルの順序に基づいています。エラーログのエントリはこのように周期的に上書きされシーケンシャルではありません。
node_id
_trace.log.next
ndb_
はエラーが発生する直ぐ前に起こったことを正確に記述したものです。この情報は
MySQL Cluster
の開発チームの分析に役にたちます。
node_id
_trace.log.trace_id
多くのこれらのトレース
ファイルを古いファイルが上書きされる前に統合することができます。trace_id
は各継続的なトレース
ライルを増分した番号です。
ndb_
は割り当てられる次のトレースファイル番号を追跡したファイルです。
node_id
_trace.log.next
ndb_
は ndbd
プロセスによるデータ出力を含むファイルです。このファイルは
ndbd が daemon
として実行されたときのみ作成されます。それはデフォルトの振る舞いです。
node_id
_out.log
ndb_
は daemon として実行されたときの
ndbd プロセスのプロセス ID
を含みます。それはまたノードが同じ識別子で起動されるのを避けるためにロック
ファイルとして機能します。
node_id
.pid
ndb_
は ndbd のデバッグ
バージョンでのみ使用されるファイルで、すべての受信、送信、およびそのデータをndbd
プロセスに持つ内部メッセージをトレースできます。
node_id
_signal.log
NSF
で搭載したディレクトリを使用しないようお勧めします。なぜなら、環境によってはこのディレクトリが問題を起こし、.pid
ファイルのロックがプロセスが終了しても有効である場合があります。
ndbd を実行するには、マネジメント サーバーのホスト名および接続しているポートを指定する必要があります。オプションで、プロセスが使用するノード ID を指定することもできます。
shell> ndbd --connect-string="nodeid=2;host=ndb_mgmd.mysql.com:1186"
この件に関する詳細は
項14.4.4.2. 「クラスタの 接続文字列
」
を参照してください。項14.6.5. 「MySQL Cluster プロセスのコマンド オプション」
は ndbd
の他のオプションについて説明します。
ndbd が実行されると、それは実際に 2 つのプロセスを始めます。これらのプロセスの最初は 「angel process」 と呼ばれています。その唯一の仕事は実行プロセスがいつ完了したかを突き止めることで、次に ndbd プロセスをそれが統合されている場合に実行します。このように、 ndbd を Unix kill コマンドで無効にする場合、エンジェル プロセスで初めて両方のプロセスを無効にする必要があります。ndbd プロセスを終了させる好ましい方法としてはマネジメント クライアントを使用してそのプロセスをそこで止めることです。
実行プロセスは他の操作同様、読み込み、書き込み、およびデータのスキャンにスレッドを 1 つ使用しています。このスレッドは数千もの同時発生的な操作を容易に処理するために同期的に導入されます。さらに、監視スレッドはそれがエンドレスのループでフリーズしないよう確認するための実行スレッドを管理します。スレッドのループはファイル I/O を取扱い、各スレッドは 1 つのオープン ファイルをそれぞれ扱います。スレッドは ndbd プロセスのトランスポーターによるトランスポーター接続に使用されます。多数のオペレーション(更新を含む)を実行するマルチ プロセッサ システムの場合、ndbd プロセスはそれが可能な場合には 2 つまでの CPU を使用できます。
多くの CPU を使用しているマシンの場合、異なるノード グループに属すいくつかの ndbd プロセスを使用できます。しかし、そのような設定はそれでも実験的なものであり、生産環境では MySQL 5.1 サポートしていません。項14.13. 「MySQL Cluster の既知の制限」 参照。