MySQL Cluster は非共有システム (shared-nothing system) での in-memory データベースのクラスタを可能にするテクノロジです。非共有システムのアーキテクチャでは非常に廉価なハードウェアで最低限のハードウェアあるいはソフトウェアの特殊仕様でシステムを構築できます。
MySQL Cluster を使用することで一極集中型不具合(シングル ポイント オブ ファイリュア)を回避できます。これを実現するため、各コンポーネントはそれぞれ自身のメモリとディスクを持ち、ネットワーク共有、ネットワーク ファイルシステム、および SAN などの共有ストレージに使用は推奨もしくはサポートしていません。
MySQL Cluster は NDB
と呼ばれる in-memory
のクラスタ ストレージ エンジンで標準の MySQL
サーバーを統合しています。弊社の説明資料では、NDB
という用語はストレージ
エンジンに特化した設定を意味し、そこでは
「MySQL Cluster」 は MySQL および
NDB
ストレージ
エンジンの組み合わせを意味しています。
MySQL Cluster は MySQL サーバー、データノード、マネジメント サーバー、および(多分に)特定のデータ アクセス プログラムを含む 1つあるいはそれ以上のプロセスをそれぞれ動作させるコンピュータの組み合わせで構築されます。以下にクラスタでのこれらのコンポーネントの関係を示します。
これらのすべてのプログラムは一緒に動作して
MySQL Cluster を構築します。データが NDB
Cluster
ストレージ
エンジンに保持されると、テーブルはデータノードに保持されます。それらのテーブルはクラスタのすべての他の
MySQL
サーバーから直接アクセスできます。このように、クラスタに保持された給料計算のアプリケーションでは、一つのアプリケーションで一人の社員の給料を更新すると、このデータをクエリする他のすべての
MySQL サーバーで瞬時のこの変更を表示できます。
MySQL Cluster のデータノードに保持されたデータはミラーされます。クラスタはトランザクションの状態を見失うことによる少数のトランザクションの失敗以外影響を受けずに個々のデータノードの不具合を処理します。なぜなら、トランザクション関係のアプリケーションはトランザクション処理がその目的にあるため、これは問題の根源にはなり得ないからです。