問題のあるテーブルを特定
/var/log/mysqld.log を確認
# mysqlcheck -u root -p -c -q -A
念のためデータベース全チェック。
# cd /var/lib/mysql/dbname/
# mysqld_multi stop 1 (1番のmysql停止)
通常のmysql停止コマンドは
# service mysqld stop
ここでは複数起動設定のためmysqld_multiを使用
CPU100%張り付き等でプロセスが終了してくれない場合には
# ps aux | grep mysql
プロセス番号を確認して強制終了
# kill -9 プロセス番号
# mv tablename.TMD tabelname.TMD.org
# myisamchk -v -q tablename.MYI
-qがダメなら-rで。
# myisamchk -v -r tablename.MYI
修復が終わったら確認
# mysqld_multi start 1
# mysqlcheck -u root -p -c -q -A
データに問題がなければ、念のためデータベースのdump
# mysqlqump -u root -p -e dbname > dbname.sql
以下のやり方もあるけど時間かかるのでオススメしない。
# mysql -u root -p
> use databasename
> check table tablename quick;
> repair no_write_to_binlog table tablename quick;
だめなら
> repair no_write_to_binlog table tablename use_frm;
長時間かかる。
no comment untill now