NoSQL&RDBMSクラスタ MySQL Cluster
Active-Active型&"非"共有ディスク型高可用性クラスタ
MySQL Clusterは共有ディスクを使わないActive-Active型のデータベースクラスタで、トランザクションをサポートし、MySQLのSQL文を利用できるリレーショナルデータベースです。単一障害点を排除して99.999%の高い可用性(年間5分程度の停止時間)を達成するための設計がされています。データを複数のサーバに分散配置することで、同時多発的に大量に発生するデータの更新を高速に処理し、スケールアウト構成によるスケーラビリティを高めています。オンラインバックアップのみならず、クラスタへのサーバの追加やバージョンアップもオンラインのまま行えるため、クラスタを完全に無停止で運用できます。
MySQL Clusterの基礎となる技術は、通信機器ベンダのエリクソンで携帯通信網の加入者データベース向けに開発された Ericsson Network DataBase(NDB)と呼ばれていた技術です。2003年からMySQLサーバの機能と統合して製品化し、現在はMySQLサーバとは独立した製品として開発および販売が進められています。内部的にはMySQLサーバの機能も利用していますが、バージョンやリリースサイクルは別になっています(最新バージョンのMySQLサーバ 5.5は2010年12月リリース、MySQL Cluster 7.1は2010年4月リリース)。
開発当初の目的であった携帯通信網の加入者データベースとして、アルカテル・ルーセントやノキア シーメンス ネットワークス、そしてエリクソンなど数多くの世界的な通信機器ベンダで採用され、現在では多くの携帯通信事業者で利用されています。更新処理の高い同時実行性を生かして、大規模Webサイトの認証処理やオンラインゲームのポイント管理、金融商品の取引インフラとしての利用が広がっています。
MySQL Clusterの最もミッションクリティカルな用途の一つは、米国海軍の航空母艦に搭載された航空機の飛行状況や飛行甲板の運用の管理を行うADMACS(Aviation Data Management and Control System)です。全長が300mを超える巨大な航空母艦とはいえITシステムを設置できるのは船上の限られたスペースのみで、さらに波による揺れや潮風による過酷な環境の中で、システムは極めて高い信頼性を求められます。MySQL Clusterは単一障害点が無く、共有ディスクを使用しないコンパクトな設計を理由に採用され、4台のLinuxサーバを利用して運用されています。
→参照:ADMACS - NAVAL AIR SYSTEMS COMMAND
MySQL Clusterのアーキテクチャ概要
MySQL Clusterでは共有ディスクを使わない代わりに、複数のサーバにデータを分散して配置し、常に複数のサーバが同じデータのコピーを持つことで冗長性を高めています。
表:MySQL Clusterを構成するノード
SQLノード | SQLアプリケーションが接続するMySQLサーバ、ただしアプリケーションデータは保持しない。ユーザ認証やSQL文を内部APIへ変換。 |
---|---|
データノード | データを保持するサーバ。データの複製やトランザクションの管理。 |
管理ノード | クラスタの起動/停止やバックアップ/リカバリ、ネットワーク障害時のスプリットブレインの解消。 |
各テーブルの主キーまたはユニークキーのハッシュを計算してパーティションを内部的に作成し、ハッシュ値とデータノードの数に基づいて各パーティションのデータをデータノードに分散配置します。分散されたデータは同じグループ内のデータノードに複製が置かれ、データが冗長化されます。パーティション内のデータが変更されると、同じパーティションを持つデータノードにも同期的に変更が反映されるため、それぞれのデータノードのデータは常に同じになります。
図1:MySQL Clusterのアーキテクチャ概要(クリックで拡大) |
クラスタに参加しているデータノードから、他のデータノードやSQLノードなどにそれぞれハートビートパケットを送りあうことで生死監視をし、データノードが停止した場合にはクラスタから即座に自動的に切り離されます。また、障害から復旧したデータノードは、同じグループのデータノードから最新の変更点までの差分を取得してデータに自動的に反映し、データの同期が時点でクラスタに再参加します。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- MySQL Cluster:NoSQL+SQL、NoSQLも使える高可用性インメモリRDBMS
- MySQL Clusterの特徴とアーキテクチャ
- MySQL Clusterにおけるチューニングの基礎
- MySQL5.6- さらなる機能追加とNoSQL
- MySQLをActive-Active構成で使う
- MySQL 5.6での機能強化点(その2)- NoSQL APIとパフォーマンス・スキーマ
- MySQL Clusterにおけるレプリケーションの基礎
- ローリングリスタート!
- MySQL Clusterにおけるレプリケーション環境構築例
- MySQL Clusterのインストールと基本的な設定および操作