プリントスタック TOKYO

データベースとセキュリティの世界から離れて早数年。過去の記憶を探しています。

MySQLのリペア

過去に、会社で MySQLMediaWiki データベースが故障している報告を受けたことがありました。そのときの現象としては MediaWiki で記事の書き込み後に保存ボタンを押すと、以下のエラーが発生していました。

from within function SearchMySQL4::update. MySQL returned error 1016: Can't open file: 'mediawikisearchindex.MYI' (errno: 145) (localhost)

これは、以下の手順でリペアできると下記の記事に記載されていました。

7.1.3.1. MyISAM テーブルが破損した場合
MySQLでテーブル破損→修復

MySQL DB の修復方法について以下にまとめておきます。
“Can't open file: 'mt_xxx.MYI'. (errno: 145)” のエラーが発生している場合は、REPAIR コマンドで修復ができる場合があります。そのときは、この方法を行うことで回復することができました。

SHELL> mysql -u root -p Database;
mysql> repair table mt_entry(エラーが表示されたDB名);

もしくは、対象のMYIが存在するDBのディレクトリに移動

SHELL> cd /var/lib/mysql/DBファイル名/
SHELL> myisamchk -r mt_entry(対象のテーブル名)

エラー発生した場合、書き込み権限を確認

myisamchk: error: Can't create new tempfile: 'mt_entry.TMD'

今回の場合は、エラーが以下のものだったので、このように対処した。

from within function SearchMySQL4::update. MySQL returned error 1016: Can't open file: 'mediawikisearchindex.MYI' (errno: 145) (localhost)
mysql> repair table mediawikisearchindex;