Kouhei Sutou
kou****@clear*****
2013年 5月 20日 (月) 11:53:52 JST
須藤です。 In <CANM+Hhd_Pdfqu_nVOEr****@mail*****> "[groonga-dev,01400] mysqldがクラッシュした後のmrnファイルのロックについて" on Sun, 19 May 2013 03:52:00 +0900, Naoya Murakami <visio****@gmail*****> wrote: > mroonga3.03をmyisamのラッパーモードで利用しています。 > > updateを並列させすぎたせいか、mmap failed!!!! in GRN_IO_SEG_REF(0x7fcbe44d19b0, > 618)というメッセージでmysqldがクラッシュし、再起動することがよくあります。 mmapが失敗しているということはリソース不足(メモリ不足)だと思います。 まずは、以下を実行して実メモリ以上の領域もmmapできるようにし てください。groongaが実メモリ以上の領域をmmapしても同時にす べての領域に触らなければ動き続けられるはずです。 % sudo sysctl -w vm.overcommit_memory=1 参考: http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-April/001294.html もし、そもそも同時に実メモリ以上のデータ量を扱わなければいけ ない場合は、もっとデータを分散するか、定期的にMySQLを再起動 して扱っているデータをリセットする必要があります。 (FLUSH TABLESでいけるような気がするのですが、磯部さんのケー スを聞くと、FLUSH TABLESでは足りないようです。。。) > その後、groonga.logを参照すると、 > io(xxxx.mrn.000010A) collisions(1000/598903): lock failed 1000 times > となっており、クラッシュした際にアップデートしていたテーブルの > インデックスがロックされて、以後、更新できなくなります。 > > このように、インデックスがロックされた場合、該当のテーブルをdisable keys 後、 > enable keysすることにより、インデックスを再構築しなおすことにより、対応しています。 はい、対応はそれで問題ありません。 > 5月頭よりずっとインデックス構築しておりますが、途中で、mysqldがクラッシュし、 > インデックスがロックされることが多くて、やり直しが多数発生してなかなか大変です。 > インデックスの再構築に、1日超かかるテーブルが多いです。。 enable keysで1日超かかるというのは、メモリ不足な気がしま す。。。インデックス再構築時のサーバーのリソース使用状況を確 認して、CPUがボトルネックになっている場合はデータがたくさん あるのでしょうがないのですが、IO waitがすごいことになってい る場合はメモリ不足だと思います。 > ***.mrn.001がロックされ、データベースごとインデックス構築やり直したことも > あります。 > > Q.インデックスがロックされた場合、インデックスの再構築以外にロックを > 解除させる方法はないでしょうか? もし、単にロックが残っているだけであれば、以下のSQLでロック を解除できます。 mysql> SELECT mroonga_command("clearlock"); 参考: http://groonga.org/ja/docs/reference/commands/clearlock.html ただし、ロックが残っているだけではなく、データベースに不整合 が発生している場合はインデックスを再構築しないといけません。 なお、「***.mrn.001」がロックされているときはデータベース内の オブジェクト名(テーブル名やカラム名)を管理している内部のテー ブルキーがロックを持っている状態になります。このときは、ラッ パーモードであれば、 * mysqldを終了 * 「*.mrn*」ファイルを全て削除 * mysqldを起動 * disable keys * enable keys でデータの再投入なしで復活しそうな気もします。 (データベースファイルがなかったら自動で作るようにしてあった 気がするので。) -- 須藤 功平 <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