技術

MySQL5.1のMySQL Clusterでマシン再起動後にNDB上のTABLESPACEのテーブルにアクセスできない問題

タイトル長くてすいません。
VMWare Serverを使って例の複数台構成の検証をしてたのですが、
MySQL5.1のMySQL Clusterでマシン再起動後にNDB上のTABLESPACEのテーブルにアクセスできない問題が発生しました。

SIGSEGV: 【プログラミング】MySQL 5.0, 5.1 でクラスタを組んでみる
このサイト参考にインストールとテストを行ってたのですが、
最初は正常にクラスタリングできるのに、マシンを再起動したらNDB上のデータにアクセスできませんでした。
オンディスクじゃなくてオンメモリになってるのかと思いましたが、ディスク上にデータファイルも残ってるし、色々調べたら何らかのエラーでデータファイルが読み込めていない様子でした。
(エラーコードを頼りにperrorを使ってみましたが、エラーの説明文が酷くて役に立ちませんでした。)

それでも色々調べたり試したりしてたら原因が分かりました。
(さらっと書いてますが、実際はここで2,3日がんばってます)

Dataノードの2回目以降の起動の仕方を間違ってたのが原因でした。

Dataノードは初回は ndbd –initial で起動するのですが、2回目以降は –initial なしで起動しなきゃいけないのです。
MySQL :: MySQL 5.1 リファレンスマニュアル :: 14.6.5.2 ndbdのコマンド オプション
–initialを付けると、Clusterのファイルシステムの全てが消去されるらしいです。
ただ全てといってもクラスタ構築の作業にかかわる全ての痕跡が消去されるわではないみたいなので、作成したTABLESPACEはあるっぽいのに中身が無いといった状態になるようです。
initialなんだからこの動作は至極妥当だと思いますが、どういうレベルのinitialなのか良く調べるべきでした。

ちなみに、–initialを付けると、Clusterのファイルシステムの全てが消去されるらしいと書きましたが、
実際に、一度initialしてしまうと簡単に復旧する方法は無いみたいです。
まぁ、再起動後の検証も行わずにいきなり実運用に投入する人は居ないと思いますが、お気をつけ下さい。
NoOfReplicasが2以上なら1台消去されても問題ないかもしれません。

コメントを残す

メールアドレスが公開されることはありません。



※画像をクリックして別の画像を表示

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください