web-dev-qa-db-ja.com

InnoDB破損時のinnodb_force_recovery

Mysqld(/etc/init.d内)を起動すると、

 InnoDB:InnoDBテーブルスペースの破損。

最高は何ですかinnodb_force_recovery mysqldを強制的に起動する値? 4と6を試しましたが、破損エラーメッセージは同じです。私はすでに完全なダンプを持っています。

4
Philippe Blayo

MySQLのドキュメントによると、innodb_force_recovery = 1を使用すると、破損したページが検出されてもサーバーは起動します。

http://dev.mysql.com/doc/refman/5.0/en/forcing-innodb-recovery.html

それでも、確認したいことがいくつかあります。

Mysqlのエラーログに関連するエラーはありますか? cat /var/log/mysqld.log

ファイルシステムは大丈夫ですか、同じパーティションにタッチでファイルを作成できますか?例/var/somefile.txtをタッチします

データベースの完全バックアップがある場合、質問で述べたように、ibdataおよびib_logfile(s)を削除して再作成できます。データベースを復元します。これにより、innodbファイルにある破損の問題が解決されます。

手順は次のとおりです。

  1. Mysqlを停止する

  2. ibdataおよびib_logfileファイルを削除します。

    例:rm -f /var/lib/mysql/ibdata1

    例:rm -f /var/lib/mysql/ib_logfile*

  3. MySQLを起動します(これにより、innodbファイルが再作成されます)。

  4. ダンプを復元mysql -u root -p < mydump.sql

Innodbファイル(ibdataおよびib_logfiles)のみを削除する限り、ユーザーとデータベースへのアクセス権はそのまま残ります。

4
Craig Efrein