MySQL Clusterのインストール

2008年7月8日(火)
奥野 幹也

MySQL Clusterとは

 MySQL ClusterはMySQL Serverのストレージエンジンの1つであり、「並列」「負荷分散」「高可用性」という特徴を備えています。

 ストレージエンジンであるため、MyISAMやInnoDBと同じようにテーブル定義においてENGINE=NDBCLUSTERとすることで、MySQLのデータを格納する実体として利用することができます(100%完全にというわけにはいきませんが、MySQLではユーザーが特にクエリを変更しなくても違う種類のストレージエンジンに対して同じ操作が行えます)。

 そして、MySQL Clusterにはほかのストレージエンジンにはない、いくつかの特徴を備えています。その特徴を紹介していきましょう。

 まず、ストレージエンジンを提供するプログラムが、MySQL Serverの外部のプロセスであるということです。そして多くの場合、プロセスは複数のホストに分散しています。

 2つ目は複数のMySQL Server間で同じテーブルを共有するということです。同じテーブルのデータに対して同時にアクセスがあった場合は、ストレージエンジンであるMySQL Clusterが排他制御を行います。

 3つ目はストレージエンジン自体に負荷分散、高可用性機能が盛り込まれているということです。ですので、クラスタリングソフトや負荷分散装置は必要ありません。フェイルオーバーは数秒で完了します。

 4つ目はシェアドナッシング型であること、つまり共有ディスクが必要ないことです。

 5つ目はMySQL Clusterがもともとメモリベースのデータベースであったということです。そのためレスポンスは非常に高速です。現在はディスクへデータを格納することができますが、依然としてたくさんメモリを搭載したサーバーホストマシンが必要です。

 6つ目はリアルタイムデータベースであることです。ハッシュインデックスによる高速なルックアップ処理、Tツリーインデックスによる高速な範囲検索を実装しているため、非常に高速なレスポンスを期待できます。

 7つ目はオンラインバックアップ機能があることです。この機能によりコマンド1つでオンラインバックアップをとることができます。

 このような特徴があるため、MySQL ClusterはMySQL Serverとはかなり異なる設定や運用が必要となります。メモリをたくさん搭載したサーバーホストが複数必要になるため、MySQL Serverを単体で使う場合と比べてシステム全体にかかるコストが多少高くつきます。ただし、ほかのクラスタリングソリューションと比べると、共有ストレージが必要ない分、割安になる場合が多いです。

 MySQL ClusterはもともとスウェーデンのEricsson社がテレコムユーザー向けに開発したリアルタイム高可用性負荷分散型RDBMSで、NDB(Network Database)という製品名でした。その名残が今でもストレージエンジン名やソースコード中に残っています。

 Ericsson社は2000年にベンチャー企業Alzato社を設立し、NDBの開発はAlzato社へ全面的に移行しました。その後、2003年にスウェーデンのMySQL ABがAlzato社を買収し、ストレージエンジンに組み込みました。つまりMySQL ClusterはMySQL Serverは別の製品であったため、異なる設定方法や管理方法が必要となるわけです。

Carrier Grade Edition

 MySQL Cluster 6.2は、以前Carrier Grade Edtion(以下CGE)と呼ばれていたバージョンのものです。CGEはユーザーのフィードバックに基づいて先進的な機能を盛り込んだバージョンで、主にテレコムユーザー向けに開発が行われたものです。

 今回、MySQL Clusterが別のディストリビューションになったことから、CGEが通常のバージョンとなりました。CGEでは性能やメンテナンス性の部分で改良が行われています。MySQL Cluster 6.2で追加された機能の一例を紹介します。

1.APIノードとデータノードの通信が多重化することにより性能が改善
2.REPORT BackupStatuコマンドとREPORT MemoryUsageコマンドによるステータス情報表示の改善
3.カラムごとに固定長、可変長レコードの明示的な指定が可能
4.カラムごとにディスクストレージの使用が可能
5.稼働中に動的なスキーマの変更(ALTER TABLEなど)が可能

 今後は、CGEをベースにして開発が続けられていくことになり、MySQL Server自身とは別のディストリビューションとして配布されます。

 余談ですが、MySQLではデータベース管理者および開発者向けの認定試験(http://www-jp.mysql.com/certification/)を用意していますが、MySQL本体とMySQL Clusterでは大きな違いがあるため、それぞれ個別の認定試験を設定しています。

1.Certified MySQL Developer (MySQL認定開発者)
2.Certified MySQL DBA (MySQL認定データベース管理者)
3.Certified MySQL Cluster DBA (MySQL認定クラスターデータベース管理者)

 MySQLやMySQL Clusterをこれから勉強するという方は、ぜひ認定試験の合格を1つの目標にして頑張ってみてください。

 次ページからは、MySQL Clusterの設定手順を紹介していきましょう。

サン・マイクロシステムズ株式会社
MySQLサポートエンジニア。MySQLサーバー本体のほかにMySQL Cluster、DRBDなどを担当。障害解析からパフォーマンスチューニングまで幅広く対応。OSSの普及をライフワークとしている。http://nippondanji.blogspot.com/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています