問題のあるテーブルを特定
/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;

長時間かかる。

,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...
Trackback

no comment untill now

Sorry, comments closed.