MySQL Cluster:NoSQL+SQL、NoSQLも使える高可用性インメモリRDBMS
MySQL Clusterのアーキテクチャ概要
MySQL Clusterのアーキテクチャを解説します。
3つのノードで構成
MySQL Clusterは、データノード、SQLノード、管理ノード、という3種類のノードから構成されます。
データノード | 名前の通りですが、データを格納するノードです。MySQL Clusterの中心となるノードです。 |
---|---|
SQLノード | MySQLサーバーです。クライアントから発行されたSQLを解析し、データノードへアクセスして応答を返します。 |
管理ノード | データノードとSQLノードを管理するためのノードです。クラスタの起動/停止や状態の確認、オンラインバックアップなどの操作を実行します。 |
データノードでは、複数のノードで同じデータを保持
データノードでは、データを各テーブルの主キーのハッシュ値に基づいて水平分割(行単位で分割)して格納します。更に、分割したデータを同じグループ内のデータノードに複製して持つことで、データが冗長化されます。
図3を例にすると、あるテーブルのデータがF1、F2、F3、F4という4つのフラグメントに分割され、4つのノードに分散して格納されています。そして、各フラグメントの複製が同じグループ内の別のノードに保持されるため、ノード1はF1のデータだけではなくF3の複製を保持しています。また、同様にノード2はF3のデータだけではなくF1の複製を保持しています。
同じデータを複数のノードで保持することにより、あるノードに障害が発生した場合でも、別のノードで処理を継続可能です。また、障害が発生したノードを復旧する際も、オンラインでノードをクラスタに戻すことができます。
データノードへのアクセスがボトルネックになっている場合は、データノードの台数を増加することで1ノードあたりが持つデータ量が少なくなり、負荷分散によって性能を向上できます(前ページのベンチマーク結果参照)。
SQLノードや管理ノードも複数台で構成可能
SQLノードや管理ノードについても、冗長化のために複数台で構成可能です。また、SQLノードへのアクセスがボトルネックになる場合は、SQLノードの台数を増加することで負荷分散でき、性能を向上できます。
各種のNoSQLインターフェース
データノード上のデータは、NoSQLによっても読み込み/書き込み可能です。MySQL Clusterの基礎となっているEricsson Network DataBase(NDB)では、C++のAPIを使ってデータを読み書きしていましたが、現在ではC++のNDB API以外にも各種のNoSQLインターフェースが用意されています。NoSQLインターフェースを使用した場合はキー・バリュー型データストア(KVS)のように利用できますが、KVSとしてMySQL Clusterをとらえると、他のKVSと比較して多数のメリットがあります。
- ACID準拠のトランザクションをサポート
- データの永続化と冗長化が担保されている
- 障害発生時の自動フェイルオーバー機能
- オンラインバックアップ機能
- NoSQLだけでなく、SQL文も利用可能
- SQLノード経由でレプリケーション機能も使用可能
レプリケーション機能も使用可能 (災害対策やMySQLサーバーとの連携)
MySQL Clusterでは、MySQLサーバーのレプリケーション機能も使用できます。レプリケーションを使うことで、MySQL ClusterからMySQL Clusterへデータを複製できるため、データセンターをまたいでディザスタリカバリ構成を組むことでシステムの信頼性を更に高めることができます。
また、MySQL Clusterと通常のMySQLサーバーの間でもレプリケーションを設定できます。そのため、高可用性が求められる大量のトランザクションをMySQL Clusterで処理し、分析処理などアーキテクチャ上MySQL ClusterよりもMySQLの方が向いている処理はMySQLサーバーで処理する、という風にMySQLサーバーと組み合わせて利用することもできます。
MySQL Clusterでは複数のSQLノードからデータが更新されますが、バイナリログ・インジェクションという仕組みによって、データノードでのデータ変更が完了した時点で、
他のSQLノードから実行されたデータ更新についても、バイナリログにシリアライズ化された上で書き込まれます。また、NoSQLインターフェースを使用してデータを更新した場合でも、同様の仕組みで更新データがバイナリログに記録されるため、NoSQL経由で変更したデータをRDBMSにレプリケーションする、といった使い方も可能です。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- MySQL Clusterの特徴とアーキテクチャ
- NoSQL&RDBMSクラスタ MySQL Cluster
- MySQL Connect 2013でも発表されたMySQLの最新リリースと、関連ツールの基礎知識
- MySQL Clusterにおけるレプリケーション環境構築例
- MySQL Clusterの主要な設定、設定変更時の注意点
- MySQL Clusterのインストールと基本的な設定および操作
- MySQL5.5- 性能改善と可用性向上
- MySQL Clusterにおけるレプリケーションの基礎
- MySQL Clusterのバックアップ/リストアの具体例
- MySQLをActive-Active構成で使う