MySQLでのクラスタは、複数のサーバを接続し、一見するとひとつのサーバであるかのように動作する仕組みです。使い方によっては、大量のデータをあつかうデータベースでも、負荷の軽減が期待できます。
MySQL Clusterはもともとエリクソン社の傘下にあったAlzato社がクラスタリング製品技術を使ったNDB Clusteを開発しました。その後、MySQL社が買収し、NDB ClusterをMySQLが取り込みました。MySQLとndbclusterストレージエンジンを統合したのがMySQL Clusterになります。
MySQL Clusterは共有ディスク、共有ストレージを使用しないアクティブ・アクティブ型データベースクラスタです。MySQL Clusteは多重化されていて、単一障害点がなく、ノードに障害が発生した場合は切り離すだけで継続できます。このように高い可用性を持ったデータベースです。
MySQL Clusterは可能性が高いばかりでなく、スケールアウト、スタートアップも容易であり、急激に利用者が増えた場合でも柔軟に対応できる点は大変メリットが高いです。例えばスタートアップ後に急激に拡大するようなオンラインゲームなどでは、スケールに合わせて変更できる点で威力を発揮するでしょう。
MySQL Clusterには役割の異なるノードが複数存在します。複数のSQLノード、複数のデータノードがそれぞれのノードグループを構成し、それがそれぞれに接続されています。
基本的にMySQLサーバとndbclusterストレージエンジンが結合されたものになります。ユーザ認証関連、テーブル定義などのメタデータはSQLノードにありますが、ndbclusterストレージエンジンのデータはデータノードにあります。
データノードにはデータ、インデックス、トランザクションを管理する役割があります。例えば新規情報が追加されると、あるデータノードがトランザクションを受け持ちますが、自動的にパテーショニングが実行され、複数のデータノードに記録が反映されます。
複数のデータノードが同期しながら管理しているので、一部の障害が発生してもトラブルのノードを切り離すことで全体の動作停止を防ぐことができます。このようなデータ多重化が障害に強いサーバを実現しています。
MySQL Clusterのインストールはいくつかの方法があります。
いずれにしても所定の場所にファイルを展開することでインストールできます。SQLノードはmysql_install_dbコマンドで初期化処理を行えます。MySQLと同様のコマンドで対応できます。
設定ファイルはSQLノードの「my.cnf」、管理ノードの「config.ini」の二つがあります。「config.ini」がクラスタ全体の設定ファイルになります。
MySQL Clusterはレプリケーションと似ているように見えますが、レプリケーションと違い、複数のマシンを一体として動かしています。障害にも強く、読み込み・書き込み処理について高い拡張性があります。また、フェイルオーバー時間の短さ、メンテナンスのオンライン化など、高可用性も実現しています。なにより災害にも強い冗長性は今後の国内のサーバ運用の面で見逃せないものです。大きなデータベースを運用している企業は、クラスタでの運用を検討してはいかがでしょうか。
ソフトエイジェンシー関連製品URL
https://www.softagency.co.jp/products/mysql
https://www.softagency.co.jp/products/continuent
製品・サービスに関するご質問、お見積もり、お問い合わせなど、お気軽にご連絡ください。