Kouhei Sutou
kou****@clear*****
2013年 2月 17日 (日) 15:23:27 JST
須藤です。 In <20130****@ayd*****> "[groonga-dev,01209] MySQLのmroongaテーブル名変更による障害?" on Sat, 16 Feb 2013 14:32:31 +0900 (JST), OHTSUKA Soushi(大塚 総司) <so****@ayd*****> wrote: > 曖昧な情報で申し訳ないのですが、mroongaのテーブル名を変更するとテーブルが > 壊れるような事象が発生する可能性はありますでしょうか。 テーブル名変更機能を入れてからしばらく経ちますが、そういう話 を聞いたことはなかったです。。。報告されていなかっただけで、 そういうことがあったのかしら。。。 > 先日、MySQLがクラッシュする障害が発生しました。 ... > 経緯としては次のような感じです。 ... > [21時頃] > ・mroongaのテーブル名変更 > (ALTER TABLEのRENAME) > > [groonga.log] > ------------------------------------------------------------(ここから) > 2013-02-15 21:02:33.673759|e|41aef940|invalid table assigned > 2013-02-15 21:02:33.682112|e|41aef940|/usr/local/groonga/lib/libgroonga.so.0(grn_table_size+0x26f) [0x2aaad2f6234f] ... > ------------------------------------------------------------(ここまで) > > [MySQLのログ] > ------------------------------------------------------------(ここから) ... > /usr/local/groonga/lib/libgroonga.so.0(grn_obj_path+0x1)[0x2aaad2f58051] > /usr/local/mysql-5.5.28/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga38storage_info_variable_data_file_lengthEv+0x2a)[0x2aaad2cf7aea] > /usr/local/mysql-5.5.28/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga12storage_infoEj+0x148)[0x2aaad2cf7d88] ... > ------------------------------------------------------------(ここまで) ログとソースコードの該当するあたりを確認してみたところ、新し いテーブル名で対応するgroongaのテーブルが見つけられないと起 こりそうでした。 「対応するgroongaのテーブルはあるけどデータベースが壊れている」 という場合はgroonga.logのもう少し前の方に「テーブルを開くのに 失敗しました」というエラーメッセージが残ってそうです。が、そ のようなものはなかったんだろうと思うので、そもそも、対応する groongaのテーブルが見つけられないんだろうなぁと思いました。 ただ、どうして見つけられないかはわかりません。。。 とりあえず、groongaのテーブルが見つけられないときはすぐにエ ラー扱いにしてクラッシュはしないようにしました。また、エラー メッセージ中にgroongaレベルでのテーブル名も出力するようにし たので、それを見ればもしかしたらヒントがみつかるかもしれませ ん。 > 取り合えずmroongaのテーブル名変更は怖いので今後は控えようかと思っています。 すみません。。。 > また、別件で質問した方がいいのかもしれませんが、データベースでmroonga関連の > テーブルをすべて削除したあと *.mrn や *.mrn.xxx ファイルが残っていたらこれは > 手動で削除していいものでしょうか。 > 実は復旧作業中に別ユーザがmroongaテーブルにリクエスト→MySQLが再起動し、中途 > 半端にファイルが存在する事態になったため、念のためDB全削除、関連ファイルも全 > 削除からリストアを行いました。 mroonga関連のテーブルがすべて削除されてOKということであれば、 *.mrnと*.mrn.xxxを手動で削除しても大丈夫です。ただし、その前 にMySQLレベルでmroonga関連のテーブルをすべて削除してあるか確 認してください。MySQLレベルにmroonga関連のテーブルの情報が残っ ているとうまくテーブルを作成したりできなくなりそうな気がしま す。 *.mrnがgroongaのデータベースのメタデータを管理しているやつで、 *.mrn.xxxが実データが入っているファイルなのですが、*.mrnは新 *しいテーブルを作成するときになかったら自動で作られるので手 *動で消しても大丈夫なのです。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) groongaサポート: http://groonga.org/ja/support/ パッチ採用はじめました: http://www.clear-code.com/recruitment/ コミットへのコメントサービスはじめました: http://www.clear-code.com/services/commit-comment.html