2015年1月25日 星期日

[野人獻曝] 救回使用 innodb 的 mySQL

因為一連串的原因(不要問很可怕),
導致我的 mySQL 整個重啟不能,
好死不死的又因為我資料庫裡面的資料表恰好都是 innoDB,
因此問題更難搞。

經過該死的 Google 和實驗後,
總算找到一個勉強算是救回資料的方法!

方法如下:

  1. 無論如何先把 mySQL 先停掉
  2. 停掉之後在你的 mySQL 設定檔中加上一行 innodb_force_recovery = 4 *
  3. 重新啟動 mySQL,試試看是否可以連進 mySQL,確定可以連進去後,先把所有會寫入 DB 的程式都先關掉,然後開始備份資料。
  4. 資料備份完後,請把有用到 innodb 的資料庫砍掉。接著移除上面那行 innodb_force_recovery,並且刪除 /var/lib/mysql 下所有 ib 開頭的檔案,然後重新啟動 mySQL。
  5. 接著重建資料庫,並把備份資料匯入應該就可以讓 mySQL 正常運作了。

張貼留言