Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


18.4.1 ndbd — MySQL Cluster データノードデーモン

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

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

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

表 18.77  この表は、ndbd プログラムのコマンド行オプションについて説明しています

形式 説明 追加または削除

--initial

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

すべての MySQL 5.6 ベースリリース

--nostart

-n

ndbd をすぐに起動しません。ndbd は ndb_mgm からの起動するコマンドを待機します

すべての MySQL 5.6 ベースリリース

--daemon

-d

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

すべての MySQL 5.6 ベースリリース

--nodaemon

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

すべての MySQL 5.6 ベースリリース

--foreground

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

すべての MySQL 5.6 ベースリリース

--nowait-nodes=list

これらのデータノードが起動されるのを待機しません (ノード ID のカンマ区切りのリストを取ります)。--ndb-nodeid も使用する必要があります。

すべての MySQL 5.6 ベースリリース

--initial-start

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

すべての MySQL 5.6 ベースリリース

--bind-address=name

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

すべての MySQL 5.6 ベースリリース

--install[=name]

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

すべての MySQL 5.6 ベースリリース

--remove[=name]

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

すべての MySQL 5.6 ベースリリース

--connect-retries=#

管理サーバーへの接続を試行する回数。無限に試行する場合は -1 を設定します

すべての MySQL 5.6 ベースリリース

--connect-delay=#

管理サーバーへの各接続試行間に待機する時間 (秒単位)

すべての MySQL 5.6 ベースリリース


注記

これらのすべてのオプションはこのプログラムのマルチスレッドバージョン (ndbmtd) にも適用され、ndbdndbmtd に置き換えることができます (このセクションで後者が出てくる場合)。

  • --bind-address

    コマンド行形式 --bind-address=name
    許可されている値 文字列
    デフォルト

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

  • --daemon-d

    コマンド行形式 --daemon
    許可されている値 ブール
    デフォルト TRUE

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

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

  • --nodaemon

    コマンド行形式 --nodaemon
    許可されている値 ブール
    デフォルト FALSE

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

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

  • --foreground

    コマンド行形式 --foreground
    許可されている値 ブール
    デフォルト FALSE

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

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

  • --initial

    コマンド行形式 --initial
    許可されている値 ブール
    デフォルト FALSE

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

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

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

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

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

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

    重要

    このオプションは、次のタイプのファイルには影響しません

    このオプションは、すでに実行されているデータノードから起動 (または再起動) されたばかりのデータノードによるデータのリカバリにも影響しません。このデータのリカバリは自動的に行われ、正常に実行されている MySQL Cluster でユーザーが操作を行う必要はありません。

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

  • --initial-start

    コマンド行形式 --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-n

    コマンド行形式 --nostart
    許可されている値 ブール
    デフォルト FALSE

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

  • --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 以外のプラットフォームでは効果がありません。

  • --remove[=name]

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

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

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

  • --connect-retries=#

    コマンド行形式 --connect-retries=#
    許可されている値 数値
    デフォルト 12
    最小値 -1
    最大値 65535

    データノードが起動時に管理サーバーに接続を試みる回数を指定します。このオプションに -1 を設定すると、データノードが無限に接続を試みます。デフォルトは 12 回の試行です。各試行の間に待機する時間は、--connect-delay オプションによって制御されます。

  • --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_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 は、エラーが発生する直前に発生した事象を示すトレースファイルです。この情報は MySQL 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"

これについての詳細は、セクション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 の既知の制限」を参照してください。


User Comments
Sign Up Login You must be logged in to post a comment.