innodbが壊れた

mysqlが起動しなくなった。
ログにはこんなエラーが。
InnoDB: stored checksum 0, prior-to-4.0.14-form stored checksum 0
InnoDB: Page lsn 0 0, low 4 bytes of lsn at page end 0
InnoDB: Page number (if stored to page already) 0,
InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) 0
InnoDB: Page may be a freshly allocated page
080714 11:21:32InnoDB: Error: trying to access a stray pointer 0xa9213ff8
InnoDB: buf pool start is at 0x29204000, end at 0x29a04000
InnoDB: Probable reason is database corruption or memory
InnoDB: corruption. If this happens in an InnoDB database recovery, see
InnoDB: http://dev.mysql.com/doc/refman/5.1/en/forcing-recovery.html
InnoDB: how to force recovery.
080714 11:21:32 InnoDB: Assertion failure in thread 680530176 in file ../../storage/innobase/include/buf0buf.ic line 264
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.1/en/forcing-recovery.html
InnoDB: about forcing recovery.
080714 11:21:32 – mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.
公式に載ってるとおりに
[mysqld]
innodb_force_recovery = 4
を記述してみたけど復旧しない。
レベルを変えても無理。
結局原因はibdata1とib_logfile0とかが同期とれてなかったため。ibdata1がでかすぎてHDDを圧迫してたから消してやったのが原因。前回はうまく起動したのに、起動時にここらへんの同期具合をみるらしく、それが原因だと思われる。一回起動して次に起動しなくなる、って、下手すれば半年ぐらいは放置されそうなネタになりかねません。長ければ数年運用して、とか・・・。
両方を消したらうまくいった。いや、データなくなったけどね。
論理バックアップあるのでそこから復旧。