MySQLのInnoDBにはDBのリカバリ機能として、MyISAMと異なり「クラッシュしても再起動するだけでリカバリ可能」という点が挙げられる。
しかし、何かよくわからないが、再起動してもリカバリできない場合がある。
その場合は強制的にリカバリをする必要がある。
■手順1:mysqlのサービス停止
[root@server]# service mysqld stop
■手順2:mysqlのディレクトリをバックアップ
cp -r /var/lib/mysql/* /mysql_backup/
■手順3:「innodb_force_recovery」オプションを追加
[root@server]# vi /etc/my.cnf [mysqld] innodb_force_recovery = 3 ※後の「手順5」でダンプが取れない場合は4,5,6と数字を上げる
※「innodb_force_recovery」について:InnoDB 復旧の強制
■手順4:mysqlのサービス起動
[root@server]# service mysqld start
■手順5:全DBのダンプ取得
[root@server]# mysqldump -uroot -p -A > /dump.sql Enter password: ※エラーが出てダンプできなかった場合は「手順3」に戻って設定値を上げて行う
■手順6:mysqlのサービス停止
[root@server]# service mysqld stop
■手順7:mysqlのディレクトリを削除
[root@server]# rm -rf /var/lib/mysql/
■手順8:「innodb_force_recovery」オプションを無効(もしくは設定値0)
[root@server]# vi /etc/my.cnf [mysqld] #innodb_force_recovery = 3
■手順9:mysqlのサービス起動
[root@server]# service mysqld start
■手順10:データベースの復元
[root@server]# mysql -uroot -p < /dump.sql Enter password:
■手順11:mysqlのサービス再起動
[root@server]# service mysqld restart
エラー無く無事DBを使えるようになっていればOK!