MySQL:InnoDBの破損リカバリを強制実行!

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!

タイトルとURLをコピーしました