MySQL Cluster開発者の一人であるFrazer
Clement氏がその歴史についてとても興味深いエントリを自身のブログで綴っているのだが、いかんせん英語の長文で日本人には辛いかも知れないので今日はその日本語訳を皆さんにも紹介しようと思う。進化の歴史とその結果生じた構造を知ることにより、MySQL
Clusterの仕組みに興味を持って頂けると幸いである。(わかり辛いところにはところどころ訳者による注釈を入れてある。ただし翻訳は結構大ざっぱなので、英語が達者であれば細かいニュアンスなどはオリジナルのエントリを参照して頂きたい。なお、日本語訳をすることに関してはFrazer氏の了解を得ているのであしからず。)
NDB(MySQL …
Oracleによる買収の報道とちょうど時期が重なってしまったのだが、実は今MySQL Conference &
Expoの真っ最中なのである。買収のニュースのインパクトが大きすぎて霞んでしまいそうになるが、MySQL
Conference & Expoにおいてなんと新しいバージョンのMySQLが発表された。MySQL
5.4である。次期バージョンは6.0とされていただけに驚いた人も多いだろうが、5.4は5.1から性能を改善し、6.0の機能をちょっとだけ先取りしたバージョンなのである。(そのバージョン番号の通り、5.1と6.0の中間的なバージョンというわけである。)
MySQL 5.4の新規機能は次の通り。
- InnoDBのスケーラビリティ改善(Googleの貢献!)
- SHOW ENGINE INNODB …
MySQL Clusterはデータノードが増えると性能が低下する???
そのような噂を聞いたことがないだろうか。この噂は事実を含んでいる面もあるが、殆どの場合は適切にスキーマを設計していないことが原因で起きる。実はMySQL
Clusterはその性能を遺憾なく発揮するためにはスキーマの設計が非常に大事なのである。
MySQL
Clusterは複数のデータノード(ノードグループ)に対して主キーの値に基づいて行単位で分散されている。主キーに偏りがなければ各データノードに格納される行数は均等になる。つまり、MySQL
ClusterはSharding(アプリケーションパーティショニング/Level2分散)を自ら行っていると言えるだろう。
MySQL …
MySQL
Clusterの導入事例資料が出来た。資料は下記のキャンペーンサイトから入手可能で、要登録だがささやかではあるがプレゼントもあるようなのでぜひ登録してみて欲しい。
http://www.computerworld.jp/eye/sun/200904/
某有名WebサイトにおけるMySQL → MySQL Clusterへの乗り換えの事例である。MySQL
Clusterの導入に興味のある方はぜひ見てみよう。オフィシャルなMySQL
Clusterの国内ユーザの事例パンフレットはこれが初なので、そういう意味でもこの資料は必見だ!!
ちなみに、この資料ではMySQL Cluster以外にも …
ナニッ!!7.0??そんなの聞いてないよっ!まじかよっっっ!!!
と思った方ごめんなさい。実はMySQL Cluster 6.4はMySQL Cluster
7.0にバージョンが変更されたのである。従って7.0.4は6.4.4の代わりにリリースされたということになる。MySQL
Cluster 7.0.4のリリースノートはこちら。
http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-news-5-1-32-ndb-7-0-4.html
バージョンが変更された理由は、6.xの継続シリーズという位置づけにしておくには新機能が多過ぎるから。MySQL Cluster
7.0は当初の予定よりも多くの新機能が搭載される予定となってしまった。 …
MySQL Clusterは、メモリテーブルであっても、かなりディスク容量を消費する。
(6.2までは、ざっくりと「メモリテーブル見積」*10。メモリを32GB積んで、30GBほどをMySQL Clusterに割り当てたら、ざっくり300GBほどのHDDがあると良い。)
というわけで、MySQL Clusterのバックアップは「取りっぱなし」では、HDD容量を圧迫するので、MySQL Clusterのメンテナンス用スクリプトを作ってみた。
#!/bin/sh
bkupdir=`find /export/home/mysql-cluster/BACKUP/ -name "BACKUP*" |wc -l`
echo "The number of backup dir under BACKUP is:" $bkupdir
if [ $bkupdir -gt 0 ];
then
cp -pr /export/home/mysql-cluster/BACKUP/*
/xxxxx/mysql-cluster-backup/
rm -r /export/home/mysql-cluster/BACKUP/*
find /xxxxx/mysql-cluster-backup/ -mtime +0 -name "BACKUP*" -exec
rm -r {} \;
…
[さらに読む]
MyNAのメーリングリストで迷ってる人を見かけたのだが、意外と同じことで悩んでいる人が多いのではないかと思って書いておく。
MySQL
Clusterのダウンロードページに行くと、Linux用のRPMが細かく分かれていて、どのパッケージをどのホストにインストールすればいいのか迷ってしまうんじゃないだろうか。MySQL
Clusterには管理ノード、データノード、SQLノードの3種類が存在するが、それぞれにインストールしなければいけないRPMは次の通り。
管理ノード
- Cluster storage engine management・・・ndb_mgmd(デーモンプログラム)が入っている。
- Cluster storage engine basic …
MySQL Clusterを使うにあたって直感的に理解しにくいことを一つ挙げると
どうやってたくさんあるSQLノードに接続すればいいんだ?
ロードバランスは?
フェイルオーバーは?
ということがあると思う。このテーマを扱ったドキュメントはありそうだちょうど良いものが見あたらない。おそらくこの点が明確でないために「よし、最近サイトのトラフィックも増えてきたことだし、いっちょMySQL
Clusterを試してみようか!」という気にならず、多くの人が利用を躊躇ってしまっているのではないだろうか?なので今日はこの点について5パターンのソリューションを紹介したいと思う。
その前に、「MySQL Clusterって何だ?シラネーヨ!」って人は、MySQL …
MySQL 6.0では新たなJOIN最適化手法であるBKA - Batched Key
Accessの実装が進んでいる。BKAとは、読んで字のごとくキーを用いたアクセスをバッチ(ひとまとまりの)処理にすることである。現在のバージョンのMySQLでは、2つのテーブルをJOINする際、一つ目のテーブルから選択した行に対して、逐一2つめのテーブルから行が一つずつフェッチされる。例えば次のクエリを用いてテーブルt1とt2をJOINする際には以下のような流れで行われる。
mysql> SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.b WHERE t1.c
> 1000 AND t1.c <= 2000;
t1からWHERE句の条件(1000 < c <= 2000)に適合する行をフェッチする。
条件に合う行が1000行あったとする。
1行目のt1.aと同じt2.bの値を持つ行をt2からフェッチする。
…
2008年はMySQLにとっては激動の一年であり、実に様々なできごとがあった。その中でも特に大きなニュースといえば、
- Sun Microsystems IncによるMySQL AB買収。
- Drizzleプロジェクト立ち上げ
- MySQL Clusterの分離
- MySQL 5.1リリース
- MySQL User Conference Japan 2008開催
だろう。ちなみに、UCJ2008の資料はイベントのホームページからダウンロードできるので、是非入手して見て欲しい。
http://jp.sun.com/company/events/mysql/report.html
この中で、個人的にもっとも刺激的なニュースを挙げると、MySQL Clusterの分離だろう。
MySQL …