No.1473 MySQLClusterセミナーのレポート
MySQL Cluster セミナーのレポート
September 9th, 2009 by naoya | Filed under day.Sun が主催した MySQL Cluster セミナーに行ってきました。普段、MySQL Community Server を使用していますが、MySQL Cluster を実際に使われている貴重なセミナーのため参加してみました。
MySQL ダウンロード数: 893,092 DL(過去1年間、Windos 版が一番多い)
MySQL Cluster 7.0: 2009年4月 GAリリース
MySQL 5.1 2008年 GAリリース
MySQL 5.4 2009年 プレビュー版リリース
今回のセミナーは、次のとおり。
- MySQL Cluster 7.0 の紹介 by Sun
- MySQL Cluster 7.0 に最適な Sun の x86 プラットフォーム by Sun
- MarketSpeed における MySQL Cluster 適用事例紹介 by 楽天証券
- MySQL Cluster 導入のケーススタディ by 住商情報システム株式会社
MySQL Cluster 7.0 の紹介
無償と有償で、できるものがある。
無償
ライセンスは、GPL
- MySQL Community Server
- MySQL Cluster Community(OSS) Edition
- MySQL GUI 管理ツール
- MySQL コネクタ(JDBCなど)
- ドキュメント
- フォーラム
有償
- MySQL Enterprise
- MySQL Enterprise Unlimited(サーバ台数無制限)
- MySQL Cluster: Standard Edition, Carrier Grade Edition
- トレーニング
- プロフェッショナルサービス
MySQL Enterprise は、MySQL Community Server の機能はまったく同じで、付加価値をつけての有償契約になっている。モニタリングツール、MySQL Query Analyzer、など。MySQL Query Analyzer は、時間別にクエリーの内容などを見ることができる。
MySQL Cluster の特徴は、次のとおり。
- シェアードナッシング型クラスタ
- コスト: 共有ディスクや特別なハードウェアは不要
- 耐障害性: SPOFなし(素敵!)
- 高可用性: 複数のノード(データノード)に同期型レプリケーションで記録される
- 自動的にフェイルオーバー
- スケーラビリティ: 参照は、コピーされた複数のデータノードで参照される
- 高性能
- インメモリデータベース(ディスクへのデータ格納も可能)
- 100,000 QPS のリクエストに対応する
- マルチスレッド対応
MySQL Cluster と MySQL Enterprise は、まったくの別々の製品になっている。
MySQL Cluster のコンポーネントは、次のとおり。
SQL Node
- 標準的な SQL インターフェース
NDB API
- 組み込み用途などに向けた高いパフォーマンスが必要なときに使える
- C++ API として使える
Data Node
- データストレージ(ディスクあるいはメモリ)
- 自動的なパーティショニング
- 同期型なので、どの Data Node にもまったく同じデータがあることを保証されている
- ディスクには、メモリ上の REDO ログバッファに記録されたトランザクションをディスク上の REDO ログファイルに書き出す(書き出す実行間隔は、デフォルトは 2000ms になっているが設定可能)
Management Node
- 管理および設定
- 2ノードでの可用性
JOIN をしたい場合、MySQL Cluster 単独ではパフォーマンスがでないため、MySQL Cluster から MySQL Community Server に非同期レプリケーションした先で行うことができる。
MySQL Cluster の有償ライセンスは、Standard Edition と Carrier Grade Edition の二種類ある。動的なノード追加は、Carrier Grade Edition のみで利用可能。
MySQL Cluster のベンチマークとして DBT2 を使ったベンチマーク結果が、ここで公開されている。
MySQL Cluster 7.0 に最適な Sun の x86 プラットフォーム
タイトルのとおり、Sun x86 プラットフォームの紹介。
AMD/Intel 両方のハードウェアがある。メモリスロット数は、AMD CPU x 2 で 16 スロット、Intel CPU x 2 で 8 スロットある。ベンダーによっては、メモリスロット数が少ないという情報があったので注意したい。サーバのハードウェア障害が発生する箇所として、電源、 ファン、ハードディスク、がほとんどのこと。Sun のサーバは、SSD を搭載可能。
楽天証券での MySQL Cluster 事例
※このセッションは、極秘のため非公開にしないといけなくなりました。残念です。
MySQL Cluster 導入のケーススタディ
※このセッションは、楽天証券のケーススタディとして取り上げられていたので非公開にしておきます。また、資料は別途修正して公開される予定とのことでした。
MySQL Cluster は、まったく使ったことはなかったけれど、今回のセミナーで概要を把握できたのでよかった。
MySQL Cluster は、基本的にはインメモリデータベース、SPOF なし、JOIN などのクエリーに弱い、などかなり大きなクセがあるので、本番へ導入するにはかなり要注意だと思った。楽天証券でも、テストの段階でいろいろとはまって、 サポートしてもらったそうだ。
このことから、僕が担当しているサービスに MySQL Community Server のかわりに MySQL Cluster を導入するのは、次の点でかなり敷居が高いと思った。
- 物理メモリを多く搭載しているサーバが必要(インメモリデータベースなので、サーバ1台のコストアップにつながる)
- 個人的にクラスターソリューションを導入した経験がまったくないので、導入・検証・運用などにおいて別途サポート契約が必須であること(おそらくけっこうなコストがかかると想定される)
- JOIN のクエリがけっこうある
- MySQL Cluster は仮想化に未対応なので、少なくても Data Node 2 台、Management Node 2台は物理的に必要であること(さらにいうと SQL Node も別のサーバにする場合は、さらに物理的なサーバ台数が必要)
今の段階では上のような考察にはなるが、ミッションクリティカルなシステムを担当しているので、かなり興味深いソリューションであることは間違いないので、引き続きウォッチしていきたい。
データベースまわりでは、DB Magazine 今月号を読んでそろそろ SSD を導入するのは、かなり現実的であると思っています。