MySQL Server Crash: “InnoDB: Error: trying to access page number … which is outside the tablespace bounds.”

適用範囲:

MySQLサーバのバージョン5.15.1[リリース5.1]

MySQLサーバのバージョン4.0以上

この資料の情報は、すべてのプラットフォームに適用する。

 

症状

電源が切れたからシャットダウンした後、MySQLを起動するときに,以下のエラになった:

130227 11:54:17InnoDB: Assertion failure in thread 4096 in file fil0fil.c line 3959

InnoDB: We intentionally generate a memory trap.

InnoDB: Submit a detailed bug report to http://b ugs.mysql.com.

InnoDB: If you get repeated assertion failures or crashes, eve n

InnoDB: immediately after the mysqld startup, there may be

InnoDB: corruption in the InnoDB tablespace. Please refer t o

InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing‐recov ery.html

InnoDB: about forcing recovery.

130227 11:54:17 ‐ mysqld got si gnal 11 ;

 

原因

これはInnoDBがファイルシステムレベルのデータファイルがこわれたからである。

 

注意事項

オペレーションシステムあるいは一部のディスクハードウェアが誤ったことをflushtodiskオペレーションに報告するかもしれない。mysqld flushが起こったと報告した、実際には起こっていない。それでディスクに書き込むときによく変化があるので、最悪の場合、電源が切れたから、InnoDBデータベースがこわれる。SCSIディスクコントローラーあるいはもともとディスクにあるバック電池が持っているディスク高速メモリーでファイルフラシュを加速する。

 

解决策

以下のステップでリカバリできる:

  1. MySQLが閉められて、すべてのデータベースファイルをコピすることでバックアップを作成する。これは大事なことなんだから、innodb_force_recoveryを使ったら、また損害がひどくなる。
  2. innodb_force_recoveryを実行した状態でMySQLを起動する。大きいな数値が必要になるかもしれない、リカバリモードで、できるだけ多くのデータをダンプしてください。そのあとInnoDBを初期化することを確保してください。このプロセスはこのガイドブックに記されている:Starting

InnoDB on a Corrupted Database.

  1. バックアップからリカバリする。一般的に、これは唯一成功できる方法である。もしこの方法を選んでいれば、まずはこわれたファイルのバックアップを作成して、それからデータをリカバリする。

 

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号