mysqld は従来の MySQL サーバーのプロセスです。 NDB Cluster で使用するには、https://dev.mysql.com/downloads/ から使用可能なプリコンパイル済みバイナリ内にあるため、NDB
ストレージエンジンをサポートするように mysqld を構築する必要があります。 ソースから MySQL を構築する場合は、-DWITH_NDBCLUSTER=1
オプションを付けて CMake を呼び出して、NDB
のサポートを含める必要があります。
ソースから NDB Cluster をコンパイルする方法の詳細は、セクション23.2.1.4「Linux でのソースからの NDB Cluster の構築」、および セクション23.2.2.2「Windows でのソースからの NDB Cluster のコンパイルとインストール」 を参照してください。
(NDB Cluster に関連するこのセクションで説明されているオプションと変数に加えて、mysqld のオプションと変数については、セクション23.3.3.9「NDB Cluster の MySQL Server オプションおよび変数」 を参照してください。)
Cluster サポートを使用して mysqld バイナリを構築した場合、NDBCLUSTER
ストレージエンジンはまだデフォルトで無効になっています。 次の 2 つの指定可能なオプションのいずれかを使用すると、このエンジンを有効にできます。
mysqld を起動する際に、コマンド行で起動オプションとして
--ndbcluster
を使用します。my.cnf
ファイルの[mysqld]
セクションにndbcluster
を含む行を挿入します。
NDBCLUSTER
ストレージエンジンを有効にしてサーバーが実行されていることを確認する簡単な方法は、MySQL Monitor (mysql) で SHOW ENGINES
ステートメントを発行することです。 NDBCLUSTER
の行に、Support
値として値 YES
が表示されます。 この行に NO
が表示される場合や、このような行が出力に表示されない場合は、NDB
対応の MySQL バージョンが動作していません。 この行に DISABLED
が表示される場合は、先ほど説明した 2 つの方法のいずれかを使用して有効にする必要があります。
クラスタ構成データを読み取るには、MySQL サーバーに少なくとも次の 3 つの情報が必要です。
MySQL サーバー自身のクラスタノード ID
管理サーバーのホスト名または IP アドレス
管理サーバーに接続できる TCP/IP ポートの数
ノード ID は動的に割り当てられるため、明示的に指定する必要は厳密にはありません。
接続文字列を指定するには、mysqld の起動時にコマンド行で、または my.cnf
内に、mysqld パラメータ ndb-connectstring
を使用します。 接続文字列には、管理サーバーを検出できるホスト名または IP アドレス、および使用される TCP/IP ポートが含まれます。
次の例では、ndb_mgmd.mysql.com
は管理サーバーが存在するホストであり、管理サーバーはポート 1186 でクラスタメッセージを待機します。
shell> mysqld --ndbcluster --ndb-connectstring=ndb_mgmd.mysql.com:1186
接続文字列の詳細は、セクション23.3.3.3「NDB Cluster 接続文字列」を参照してください。
この情報を指定すると、MySQL サーバーはクラスタの完全な参加者として機能できます。 (この方法で実行している mysqld プロセスは、多くの場合 SQL ノードと呼んでいます。) すべてのクラスタデータノードとそのステータスを完全に認識し、すべてのデータノードへの接続を確立します。 この場合、任意のデータノードをトランザクションコーディネータとして使用し、ノードデータを読み取って更新できます。
mysql クライアントで SHOW PROCESSLIST
を使用すると、MySQL サーバーがクラスタに接続されているかどうかを確認できます。 MySQL サーバーがクラスタに接続されていて、PROCESS
権限を持っている場合は、出力の最初の行が次のように表示されます。
mysql> SHOW PROCESSLIST \G
*************************** 1. row ***************************
Id: 1
User: system user
Host:
db:
Command: Daemon
Time: 1
State: Waiting for event from ndbcluster
Info: NULL
NDB Cluster に参加するには、オプション --ndbcluster
および --ndb-connectstring
(または my.cnf
での同等のもの) を both で mysqld プロセスを起動する必要があります。 --ndbcluster
オプションのみを付けて mysqld が起動された場合や、それがクラスタに接続できない場合は、ストレージエンジンに関係なく、NDB
テーブルを操作することも、新しいテーブルを作成することもできません。 後者の制約は、SQL ノードがクラスタに接続されていない間に、NDB
テーブルと同じ名前を持つテーブルが作成されることを防ぐ目的の安全対策です。 mysqld プロセスが NDB Cluster に参加していないときに別のストレージエンジンを使用してテーブルを作成する場合は、サーバーなしを --ndbcluster
オプションで再起動する必要があります。