島村 優太郎
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***** --群馬-- ------------------☆