MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

23.1.1 NDB Cluster のコア概念

NDBCLUSTER (NDB とも呼ばれる) は、高可用性とデータ永続性の機能を備えたインメモリーストレージエンジンです。

NDBCLUSTER ストレージエンジンはさまざまなフェイルオーバーとロードバランシングのオプションを使って構成できますが、クラスタレベルのストレージエンジンから始めるのがもっとも簡単です。 NDB Cluster NDB ストレージエンジンには、クラスタ自体内のほかのデータにのみ依存する完全なデータセットが含まれています。

NDB Cluster の「クラスタ」部分は、MySQL サーバーから独立して構成されます。 NDB Cluster では、クラスタの各部分はノードとみなされます。

注記

多くのコンテキストでは、「ノード」という用語はコンピュータを示すために使用されますが、NDB Cluster について説明するときはプロセスを意味します。 1 台のコンピュータで複数のノードを実行できます。1 つ以上のクラスタノードを実行しているコンピュータに対しては、クラスタホストという用語を使用します。

クラスタノードには 3 つのタイプがあり、NDB Cluster の最小構成では、少なくとも 3 つのノードがあり、これらの各タイプのいずれかです:

重要

本番環境で 3 ノードセットアップの採用を期待するのは現実的ではありません。 このような構成では冗長性は提供されません。NDB Cluster の高可用性機能を利用するには、複数のデータおよび SQL ノードを使用する必要があります。 複数の管理ノードを使用することも、強くお勧めします。

NDB Cluster 内のノード、ノードグループ、フラグメントレプリカ、およびパーティション間の関係の簡単な概要については、セクション23.1.2「NDB Cluster ノード、ノードグループ、フラグメントレプリカ、およびパーティション」 を参照してください。

クラスタの構成には、クラスタ内の各ノードの構成と、ノード間の個々の通信リンクの設定が含まれます。 NDB Cluster は現在、データノードがプロセッサの電力、メモリー領域、および帯域幅に関して同種であることを意図して設計されています。 さらに、一元管理の構成を提供するため、クラスタのすべての構成データが全体として 1 つの構成ファイルに格納されます。

管理サーバーは、クラスタ構成ファイルとクラスタログを管理します。 クラスタ内の各ノードは、管理サーバーから構成データを取得するため、管理サーバーがどこにあるかを特定する手段を必要とします。 データノードで注目に値するイベントが発生すると、そのノードはこれらのイベントに関する情報を管理サーバーに転送し、管理サーバーはその情報をクラスタログに書き込みます。

さらに、任意の数のクラスタクライアントプロセスまたはアプリケーションが存在する可能性があります。 これらには、標準の MySQL クライアント、NDB 専用の API プログラム、管理クライアントなどが含まれます。 次のいくつかの段落で、これらについて説明します。

標準の MySQL クライアント.  NDB Cluster は、PHP、Perl、C、C++、Java、Python、Ruby などで記述された既存の MySQL アプリケーションで使用できます。 このようなクライアントアプリケーションは、NDB Cluster SQL ノードとして機能する MySQL サーバーとの間で、スタンドアロン MySQL サーバーとの対話とほぼ同じ方法で SQL ステートメントを送受信します。

NDB Cluster をデータソースとして使用する MySQL クライアントは、複数の MySQL サーバーに接続して負荷分散とフェイルオーバーを実現する機能を利用するように変更できます。 たとえば、Connector/J 5.0.6 以降を使用する Java クライアントは、jdbc:mysql:loadbalance:// URL (Connector/J 5.1.7 で改善された) を使用して、負荷分散を透過的に実現できます。NDB Cluster で Connector/J を使用する方法の詳細は、Using Connector/J with NDB Cluster を参照してください。

NDB クライアントプログラム.  高レベルの C++ API である NDB API を使用して、クラスタに接続されている MySQL Servers をバイパスして、NDBCLUSTER ストレージエンジンから NDB Cluster データに直接アクセスするクライアントプログラムを作成できます。 このようなアプリケーションは、データへの SQL インタフェースを必要としない特殊な目的に役立ちます。 詳細は、The NDB APIを参照してください。

NDB 固有の Java アプリケーションは、NDB Cluster Connector for Java を使用して NDB Cluster 用に記述することもできます。 この NDB Cluster コネクタには、NDBCLUSTER に直接接続する Hibernate や JPA などのオブジェクトリレーショナルマッピング永続性フレームワークに似た高レベルのデータベース API である ClusterJ が含まれているため、MySQL Server にアクセスする必要はありません。 詳細は、Java and NDB ClusterおよびThe ClusterJ API and Data Object Modelを参照してください。

NDB Cluster は、Node.js を使用して JavaScript で記述されたアプリケーションもサポートします。 JavaScript 用の MySQL Connector には、MySQL Server だけでなく、NDB ストレージエンジンに直接アクセスするためのアダプタも含まれています。 この Connector を使用するアプリケーションは、通常イベント駆動型であり、ClusterJ に採用されているものと多くの点で似ているドメインオブジェクトモデルを使用します。 詳細は、MySQL NoSQL Connector for JavaScriptを参照してください。

管理クライアント.  これらのクライアントは、管理サーバーに接続して、ノードの正常な起動と停止、メッセージトレースの開始と停止 (デバッグバージョンのみ)、ノードのバージョンとステータスの表示、バックアップの開始と停止などのコマンドを提供します。 このタイプのプログラムの例としては、NDB Cluster に付属する ndb_mgm 管理クライアントがあります (セクション23.4.5「ndb_mgm — NDB Cluster 管理クライアント」 を参照)。 このようなアプリケーションは、NDB Cluster 管理サーバーと直接通信する C 言語 API である MGM API を使用して記述できます。 詳細は、The MGM APIを参照してください。

Oracle は、多数のノードで NDB Cluster を再起動するなど、多くの複雑な NDB Cluster 管理タスクを簡略化する高度なコマンド行インタフェースを提供する MySQL Cluster Manager も使用可能にします。 MySQL Cluster Manager クライアントは、ほとんどのノード構成パラメータの値、NDB Cluster に関連する mysqld サーバーオプションおよび変数を取得および設定するためのコマンドもサポートしています。MySQL Cluster Manager 1.4.8 は NDB 8.0 の実験的なサポートを提供します。 詳しくはMySQL Cluster Manager 1.4.8 User Manual,をご覧ください。

イベントログ.  NDB Cluster は、イベントをカテゴリ (起動、シャットダウン、エラー、チェックポイントなど)、優先順位、および重大度別にログに記録します。 すべてのレポート可能イベントの完全なリストについては、セクション23.5.3「NDB Cluster で生成されるイベントレポート」を参照してください。 イベントログには、ここに示す 2 つのタイプがあります。

注記

通常の状況では、クラスタログのみを保持して調べるだけで必要十分です。 ノードログを調べる必要があるのは、アプリケーション開発やデバッグの場合だけです。

Checkpoint.  一般的には、データをディスクに保存したときにチェックポイントに達したといいます。 NDB Cluster に固有のチェックポイントは、コミットされたすべてのトランザクションがディスクに格納される時点です。 NDB ストレージエンジンには、クラスタデータの一貫したビューが維持されるように連携する 2 つのタイプのチェックポイントがあります。 次のリストにそれらを示します。

ローカルチェックポイントとグローバルチェックポイントによって作成されるファイルおよびディレクトリの詳細は、NDB Cluster Data Node File System Directoryを参照してください。