停電からの復旧2009/12/06 23:12

 日曜日、昼前まで寝る。昼過ぎに父が東京駅を出発したとのメールあり。3時すぎに到着。昨日の宴会で呑みすぎで調子があまり良くないらしい。

 19:30頃に停電の復旧作業のために家を出る。最初は、別に明日でもいいではないかと思ったが、対応する人が結局、僕しかいないことについて考え、思い直して行くことにする。そういえば、昨年末も全く同じ時期で父が来ていて、やはり停電の復旧に行ったような記憶がある。いや、一昨年だったかもしれないが。

 20時過ぎに到着。10数分の作業のつもりだったのだけれど、いろいろと問題があり。起動しない、NICを認識しないなど、トラブルシューティング。

 とりあえず、DNSについては起動しておかないと話にならないので、それはやった。結局vmwareの設定ファイルと本体バージョンの不整合が原因で仮想NICデバイスを認識できていないようだった。その部分だけ初期化して解決。何故か、DHCPの設定が消えている謎。このあたりについて、まあ僕は2年前ぐらいに責任を放棄したので、いまさら何を言うこともできないが、それにしても、どうしようもない感じ。これは一度全部撤去して、必要ならもう一度再構築するように委ねるべきだろう。
 XenのほうはLVMのパーティションを認識していない問題でブートシーケンスが止まっていたが、こちらはよくわかっていないので触らないことにする。

 22時前に大学を出て、22:40頃帰宅。起動の確認をするが、subversionのhttpdインスタンスが起動に失敗している。。。uidの取得についてエラー、何かおかしい。このあたりも結局のところ、ちゃんと申し送り作業が行われていないので、場当たり的な対応をするのが限界だ。一度整理して、再構築が必要なのだろうか。

 とりあえず、もう寝よう。

 (追記12/7)PCをシャットダウンした直後にTELが有った。これから行って対応してくれるとのこと。感謝。でも、こういう善意に頼るシステムは長続きしないし、もっと省力化できるはずのことが多いと思う。ダメダメになるまで放置してというのも一つだろうが、何か整理できることでは提案するか。


MySQL Clusterについて2009/12/08 00:14

 MySQL Cluster 7.0.8aの時点での現状について、僕の認識をメモ。

(使えるかどうかの観点)

・地雷を踏みまくることを覚悟するのであれば使える。7.x系列はまだ枯れていない。最近でも、どんどんバージョンが上がっている

・したがって、急いでいるときに早いレスポンスで応答してくれる、有償のテクニカルサポートは必須(でも、メールベースなので、やりとりを重ねると解決には結局、半日くらいはかかる。それ以上を求めるのであれば、コンサルティング契約を購入するか、あるいは自分でソースコードをデバッガで追うかが必要)。

・本当にMySQL Clusterでなければならないのか?バッチ処理や、大きなテーブル操作が中心になるのであればInnoDBの方が断然パフォーマンスが出る(特にテーブルがinnodb_buffer_pool_size以内で収まる場合)。

・件の可用性の話で、99.999%の稼働率を実現したいのであれば、SPOFを持たないシステムを構築できる点で、MySQL Cluster(というか、ベースとなっているNDB Cluster)を使う意味がある。

・しかし、構成要素が多くなるため(データノード、SQLノード、MGMノードの3種類)、それらをちゃんと組み合わせて、システムとして高い信頼性を確保するには監視機能とか、結構作り込みが必要になり大変だ。

・ちょっとしたこと(操作、条件)で、データノード全体が落ちてしまったりとか、要するにバグ的な不具合(まさに地雷)がある。

・パフォーマンスの点で、InnoDBと比べて、常に、圧倒的に高速であるとは言えないのが現状(逆に言えば、InnoDBの完成度が非常に高いレベルにあるということである)。

・OracleのSun買収が完了してしまうと、MySQL Clusterの立場はどうなる?というところが不透明である。

(ありえないと思うひどい点)

・特定の危険なクエリが原因で、データノード自体が落ちることが、まま有る(安全側に倒してキャンセルしてくれない。。)

・SQL文の最適化が、まだまだである(インデックスを使ってほしいところで使ってくれない、とか、特定のクエリでは何故かフルテーブルスキャンが走ってしまい激重であることなど)

・そもそも、Primary Key(主キー)に帰着できない、インデックスを使うSQL文を発行すると、すべてのデータノードに対してアクセスが行ってしまうという仕様(同様の理由でJOINも原則使えない)。

・したがって、データノードの性能向上について、スケールアウトできない(主キーで完結するクエリだけ投げるならばスケールアウトすると思われるが、そうであるならば、無理にMySQLとして使う必要はなく、NDB Clusterとして使うのが普通)。

・MySQLのテクニカルサポートを受けるためには、Commercial版のバイナリを使う必要があるのだが、これにはInnoDBのコードが入っていない(なので、NDBを使わない他のテーブルはMyISAMを使うことになる、あるいは、別個にMySQL Enterpriseを入れるか)。


(その他豆知識)

・InnoDBは元々GPLであり、フリーで公開されているGPL版のMySQL Clusterには入っているのだが、こちらのバイナリではサポートが受けられない

・その一方で、通常の商用版のMySQL EnterpriseはGPLライセンスであり、こちらはそのバイナリでサポートが受けられる、という変則的なルールである。

・Carrier Grade Edtion(CGE)とStandard Editionの区別はversion 6.2から無くなった(CGEに統一された)。

・よく知られていることだけれど、元々はNDBと呼ばれていて、Ericssonの中で開発されていたものが、Alzato社という会社にスピンアウトして、それがMySQL ABに買収されたものである。だから、元々全く別に作られたデータベースエンジンにMySQLのレイヤーをかぶせた実装になっているので、MySQL的な機能に一部対応していないことも結構ある。

まだ風邪気味2009/12/09 19:48

 火曜日、夕方まで寝込んでしまう。
 水曜日、まだ調子はあまり良くないまま。集中力無し。






Google
WWW を検索 zak.asablo.jp を検索