[Senna-dev 248] Sennaインデックス破損について

Back to archive index

島村 優太郎 ml****@ryne*****
2006年 7月 31日 (月) 00:53:37 JST


島村です。

先日MySQLがクラッシュしました。
環境は以下の通りです。

OS : FreeBSD 6.0-RELEASE-p7 i386(uname -mrs)
MySQL : 4.0.26
Senna : 5/11時点のlatest-svn(revわからないです。。) + 2ind  
Patch
Index: SEN_INDEX_NGRAM

クラッシュの原因はメモリ不足によるものでした。

5/11以降、メモリ不足で8度再起動がかかっています。
8度目の時(7/7)に、テーブル(Sennaインデックス未使 
用、300MB弱 約100万レコード)が破損、
REPAIRで修復しました。
これは何も問題もなく終了しました。

今回再起動が起こったときに破損したテーブルは
500KB弱 / 5000レコードで、varchar(50)に一つFULLTEXTを 
張っています。

動作が挙動不審になった時に.errを見たところ、
Can't open file: '[table].MYI'. (errno: 145)
が大量に出現していました。

5回ほどcore dumpもしていたようです。

今回も前回同様ただのテーブルの破損と思い、REPAIR 
で対処しようと思いました。
しかし、REPAIRを叩いたところエラー無しでコマンド 
が終了しました。

と、同時にログから1秒に20~30行は出力されていた 
Can't〜が出てこなくなり、
ちょこちょこと
/usr/local/libexec/mysqld: Got error 134 from table handler
が代わりに出力されだしました。

ちょこちょこの頻度がそこそこだったので検索が悪 
いのかな、と思い
見当するテーブルでMATCH()してみたところ見事にエ 
ラー、
なのでSennaのインデックスをDROP -> ALTERしてみたとこ 
ろぴったりと止みました。

残念ながら、テンパっていて
Sennaの動作ログは取っていませんでした。。


前置きが長いのですが、

・今回のように破損したSennaインデックスを修復す 
る方法は
 ALTERでインデックス再構築しかないのでしょうか?
・Sennaのインデックスが破損したところで、
 CHECKコマンド等では発見できないのでしょうか?
・REPAIRでエラーなしで終了したのにCan't〜が消える 
現象はなんだったのだろうか‥

一番下は原因が未だよくわかっていないのですが、
上記3つについてわかる方がいましたらご回答よろ 
しくお願いします。

/* * * * *
  AIO/DIOが安定次第、Sennaは
  全てLinuxサーバーに移す予定です。
  それまではFreeBSDで頑張ろうかと。。
				* * * * */

------------------☆
   島村 優太郎
  ml****@ryne*****
  --群馬--
------------------☆


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