[groonga-dev,01210] Re: MySQLのmroongaテーブル名変更による障害?

Back to archive index

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




groonga-dev メーリングリストの案内
Back to archive index