MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  NDB Cluster での MySQL Server の使用

23.5.9 NDB Cluster での MySQL Server の使用

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 での同等のもの) を bothmysqld プロセスを起動する必要があります。 --ndbcluster オプションのみを付けて mysqld が起動された場合や、それがクラスタに接続できない場合は、ストレージエンジンに関係なく、NDB テーブルを操作することも、新しいテーブルを作成することもできません。 後者の制約は、SQL ノードがクラスタに接続されていない間に、NDB テーブルと同じ名前を持つテーブルが作成されることを防ぐ目的の安全対策です。 mysqld プロセスが NDB Cluster に参加していないときに別のストレージエンジンを使用してテーブルを作成する場合は、サーバーなし--ndbcluster オプションで再起動する必要があります。


関連キーワード:  NDB, テーブル, ndbinfo, ndb, ノード, 管理, サーバー, データ, 接続, 構成