アイビスヘッダー

IBS

2011年6月21日火曜日

MySQL 5.0.45 テーブルの修理

あるテーブルにSQLを実行すると、エラーになり始めました。

SQLが間違っているかと思いテーブルの構造を確認しました。
mysql> show create table テーブル;
ERROR 145 (HY000): Table './データベース/テーブル' is marked as crashed and should be repaired

なんやてー
テーブル修理した方がいいってどういう事やねん。

再度テーブルの調査
mysql> check table テーブル;
Table:テーブル、Op:check、Msg_type:error、Msg_text:Table './データベース/テーブル' is marked as crashed and should be repaired

やっぱり修理した方がいいみたい・・・


ということで、修理開始!
mysql> repair table テーブル名;



終わらない・・・



1時間待っても終わらない・・・

サイズを調べました。
レコード数:36,736,310件
MYDファイル:4GB
MYIファイル:2.1GB
frmファイル:8KB




ドキドキしながら待つこと2時間
ようやく終わりました。


再度チェック
Op:check、Msg_type:status、Msg_text:OK
治ったみたい。

select文も通ります。

よかったよかった。

mysqldump(5.0.45)が失敗する

MySQL5.0をMySQL5.5に移行するにあたり、mysqldumpでバックアップしてからレストアする方法を選択しました。

mysqldumpでバックアップしたところ途中で、「mysqldump:Couldn't execute 'SHOW TRIGGERS LIKE 'posts'":Can't create/write to file '/var/lib/mysql/#sql_5789_0.MYI' (Errcode:24) (1)」と表示されて止まってしまいます。

ググッてみると、open_files_limitを増やしたほうがいいとかもありましたが、自分は --skip-lock-tables を追加することにより回避できました。