2015年7月17日金曜日

Mysqlのリペア

仕事のWebサイトが、突如表示されなくなった。
どうやら、MySQLの接続障害のようだ。

調べていくと、MySQLのデータが格納されているLinuxサーバーの /var ディレクトリが
オーバーフローしたらしい。

MySQLのデータは消せない。
/var/apt/cache/archives にもたんまりキャッシュファイルが溜まっていたので、
# apt-get clean
で掃除。
これで /var に40%くらいの空きができた。

Webサイトが表示され、復活! と思いきやログインができない。
どうやら、オーバーフローの接続障害の際、MySQLのtableが損傷を受けたようだ。

mysql をリスタートさせると
 # ERROR 144 (HY000) at line 1: Table './database_name/***_session' is marked as crashed and last (automatic?) repair failed
なんてエラーを吐く。

調べるとtableをリペアする方法があるらしい。
http://blog.cloudpack.jp/2011/07/27/server-news-mysql-restoration/

# mysql -u root -p
mysql> repair table ***_session;

……… 1時間以上反応なし。killする。

困った、さらにググる。
myisamchk という修復コマンドがあるらしい。
http://www.bnote.net/mysql/19_myisamchk.shtml


まずは、apache2 と mysqlを停止
# invoke-rc.d apache2 stop
# invoke-rc.d mysql stop

修復コマンド
myisamchk -r /var/lib/mysql/database_name/***_session.MYI

あ、何か走った。