動かざることバグの如し

近づきたいよ 君の理想に

innoDBのデータベースがぶっ壊れたときの対応メモ

  • /var/lib/mysqlのib_logfile0、ib_logfile1、ibdata1は生命線になる
  • xxxx.frmとxxxx.ibdもとっておくこと

復活手順

  • 同一DBに同じスキーマのテーブルを作成(別テーブル名で可)
  • ALTER TABLE example_table DISCARD TABLESPACE;を実行 example_table.ibdが消えるはず
  • ibdを本来のに変えて
  • ALTER TABLE example_table IMPORT TABLESPACE; 実行 普通のAlter tableだからめちゃ時間かかるかも

実行中のログ

181004  5:52:05 [Note] InnoDB: Sync to disk
181004  5:52:05 [Note] InnoDB: Sync to disk - done!
181004  5:52:05 [Note] InnoDB: Phase I - Update all pages
181004  5:57:32 [Note] InnoDB: Sync to disk
181004  5:57:33 [Note] InnoDB: Sync to disk - done!
181004  5:57:33 [Note] InnoDB: Phase III - Flush changes to disk
181004  5:57:33 [Note] InnoDB: Phase IV - Flush complete

そもそもmysqlが起動しない

innodb_force_recovery オプションを有効化するしかない

[mysqld]
innodb_force_recovery = 1

ぶっちゃけ1で起動できればいい方 今回は3だった 6は見れてもほぼほぼ壊れてるので使い物にならないレベル

参考リンク