Naoya Murakami
visio****@gmail*****
2013年 7月 19日 (金) 20:13:22 JST
お世話になっております。 村上と申します。 今回は、不具合とか、なにかうまくいかないとかではないですが、利用していて、少し煩雑だなとか、復旧方法がなかなか気づきにくいなと思ったことについて報告します。 <事例> mroongaラッパーモードにおいて、全文フルテキストインデックスが有効な状態のまま、mrnファイルが破損した場合や、ラップしたストレージエンジンの実ファイルのみをリストアした場合等、mrnファイルが存在しないと、データにアクセスできず、また、alter table disable keys、repair tableも受け付けない状態になります。 この場合、当方では、以下の手順で復旧しています。 <復旧方法> 1.データベースにmroongaのテーブルが1つもなく、*.mrnファイルが存在しない場合、まず、適当なmroongaのテーブルを1つ作ります。 2.select mroonga_command('table_create <TABLE名>'); でmroongaのテーブルリストに、対象のテーブルを作ります。 これにより、データにアクセスできるようになり、selectやalter tableが 通るようになります。 3.alter table disable keys;→enable keysもしくは、repair tableにより、全文インデックスを再構築します。 <ご提案> MYISAMだと、ファイル単位で取り扱いやすく、hotbackupみたいなコマンドもあるので、mrnファイルだけがないようなことも起こり得るのかなと考えました。 もし、mrnファイルがない場合でも、最低限、参照用のコマンドやインデックス再構築のコマンドを受け付けるよう、ストレージエンジン側で対応可能でしたら、運用が楽になり、助かります。また、今後同事象に陥ったユーザも復旧手順を模索する手間が軽減できると思います。 とはいえ、mrnファイルがないときのエラー処理でほかとの兼ね合い等もあるかもしれませんし、あまり通常使用で起こる頻度は少ないと思われますので、障害時のユーザ側のノウハウとしてもよい気がします。 以上です。