MySQL Cluster


MySQL Cluster(5.1.xx)を構築してみました。
いやあ、何日かかったことか。
大はまりでしたよ。途中、ほんとにこれ出来るのか?と何度も疑問に思いました。
日本語版の書籍は、マスター、スレーブのレプリケーションは良く書かれてますけど、
MySQL Clusterのことが書かれてる本はホント少ないですしね。

自分はMySQLもMySQLClusterも、ソースからコンパイルしてインストールしてるのですが、
MySQLの公式リファレンスも全然当てにはなりません。
ぶっちゃけたところ、嘘が書かれてます。

例えばこう。

ソースからコンパイルする場合には、--with-ndbcluster、
--with-partitionオプションとともにconfigureを実行して下さい。

ふむふむ。
ではでは早速^^

$ ./configure --prefix=/usr/local/mysql --with-readline --with-ndbcluster --with-partition

???

configure: WARNING: unrecognized options: --with-ndbcluster, --with-partition

えー???そんなオプションはないって!?
configure のヘルプをみると、確かにそんなオプションは無いみたいです。
configureファイル作った人と、ドキュメントを書いてる人の仲が悪いのでしょうかね。
正しくはこうでした。

./configure --prefix=/usr/local/mysql --with-readline --with-plugins=ndbcluster,partition

これでもOKです。

./configure --prefix=/usr/local/mysql --with-readline --with-plugins=max

やれやれ。。。
とりあえずこれでMySQL Clusterをインストールはできました。
しかし、本当の地獄はこの後でした。。

まずは管理ノード(MGM)を起動してみます。

$ ndb_mgmd -f /etc/config.ini

はい。エラー出まくりです。
管理ノード用の設定ファイル(/etc/config.ini)ですが、公式リファレンスとか、
ThinkITの特集とか参考にしてるのですが、
一向に起動など出来ません。
結局、設定ファイル自動作成支援サイト的なもの(Configuration Tool for MySQL Cluster)から作成したものをやっと受け付けてくれました。。。

でもでも、まだまだこの先長いです。

次はデータノード(NDB)です。
設定を間違えたのかと思い、あれこれやっても変わらず。。。
メモリ不足ということに気づくのにまた時間を費やし。。
結局、768MBを持ってして、やっと起動できたといった感じです。
スワップに入っちゃうと、OSがまるっきしハングしちゃって、
何も受け付けてくれなくなるので要注意ですよ!!

そして最後はSQLノード(MySQL)です。
気を取り直して、行きましょう。あと少し、なはずです。
これはThinkITにやられたって感じですね。
情報が古いのでしょうかね???
自分が試したMySQLのバージョンは、5.1.52です。
SQLノードを設定するには、SQLノード用マシンで、my.cnfを修正します。
[MySQLD]ディスクリプションに、

ndbcluster
connect-string=<管理ノードのIPアドレス>

これです。これが嘘なんですね。
実際のところは古いのか嘘かわかりませんが、
本当にしてやられたという気持ちなので嘘ということにしておきます。
実際は、

ndbcluster
ndb-connectstring=<管理ノードのIPアドレス>

です。

予断ですが、ThinkITの記事を書いてるのは、サン・マイクロシステムズのサポートエンジニアの人ですね。

間違って、<connect-string=>とかすると、当然エラーが吐かれ、
それをネットでいくら調べてもいい感じの情報は見つかりませんので気をつけて下さいね。

ちなみに、NDBDの用の設定でmy.cnfを、

[mysql_cluster]
connect-string=<管理ノードのIPアドレス>

としてもエラーは出ませんし、問題なく管理ノードにつながっちゃいます。
でも、SQLノードの起動は失敗します。
なので、これも、

[mysql_cluster]
ndb-connectstring=<管理ノードのIPアドレス>

としなきゃいけません。
ややこしいですね。

そして最後は、SQLノードが、管理ノードにつながらない。。。に、プチはまりしました。
一歩一歩確実にはまるのが、MySQL Clusterの醍醐味であります。
こんな感じ。

ndb_mgm> SHOW

略

[mysqld(API)]   4 node(s)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)
id=6 (not connected, accepting connect from any host)
id=7 (not connected, accepting connect from any host)

じつはこれ、結果的には、単に、SQLノードが起動しても、
すぐには接続が完了しないだけっぽくて、待ってれば繋がりました。
データノードと管理ノードの接続は、全然待ちなんか無かったので、
その感覚でSQLノードもすぐに接続されるだろうと思ったのが甘かったです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です