Kouhei Sutou
kou****@clear*****
2015年 11月 6日 (金) 11:08:05 JST
須藤です。 In <20151****@domai*****> "[groonga-dev,03627] Re: Mroonga_で_data_truncated_for_primary_key_column: <id> が発生する" on Wed, 04 Nov 2015 18:03:29 +0900, 各務 洋 <kagam****@outwa*****> wrote: >> Groongaレベルのロックが残っているときは復旧できない(テーブ >> ルを作りなおすしかない)ときです。 > > なるほど。ここで3点ご相談があります。 > > 1.今回のテストパターンで再現可能だと思いますので、破損する根っこを調査 > いただくのは可能でしょうか? 「再現可能」という「Groongaレベルのロックが残る」ケースのこ とであっていますか? 「Groongaレベルのロックが残る」ケースがおこるパターンはわかっ ていて、Groongaのテーブル・カラムを更新中にkillされると発生 します。 これはそういうもので修正・改良しようがないものなのです。 > 2.復旧できない(テーブルを作りなおすしかない)際は、自動でテーブルを作 > りなおす、復旧の自動処理化は可能でしょうか? 残念ながらできません。 というのは、復旧処理はケースバイケースだからです。 大事なポイントは、「復旧できない(テーブルを作りなおすしかな い)」ケースでは残っているデータは「信用できない」ということ です。各務さんが行っているALTER TABLEを使った方法は「信用で きる」前提の復旧方法なのです。 残っているデータが「信用できない」ので、復旧するにはバックファ イルやダンプファイル、マスターデータからデータを入れなおす必 要がありますが、それは運用次第なのでMroongaレベルで自動化す ることはできません。 > 3.復旧できないパターンの際、目印となるログ出力は可能でしょうか? ログではないですが、[groonga-dev,03626]で連絡したバージョン にはすでに入っていて、接続時に接続エラーになります。 >> 1. このまま。何もしない。エラーが起こったら報告する。 >> 2. 標準出力に書けなくなったらそこで処理を終わって終了する。 >> 3. 標準出力に書けなくなったら出力だけやめて処理は全部やって終了する。 > > 標準出力で書けなくなっても続行可能な処理というのが思いつかなかったです……。 grndb recoverのときは処理の途中経過を標準出力に報告しながら 復旧処理を進めるので、途中経過を報告しなければ処理は進められ るのです。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> Groongaベースの全文検索システムを総合サポート: http://groonga.org/ja/support/ パッチ採用 - プログラミングが楽しい人向けの採用プロセス: http://www.clear-code.com/recruitment/ コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ: http://www.clear-code.com/services/code-reader/