win2008,Mysql5.6,mysql服務無法啟動
查看事件日志,報錯InnoDB: Attempted to open a previously opened tablespace
最終解決方法,修改my.ini
把innodb_force_recovery = 0 修改 innodb_force_recovery = 1
================================================
參數Innodb_force_recovery影響了整個InnoDB存儲引擎的恢復狀況。默認0
因為日志已經損壞,這里采用非常規手段,首先修改innodb_force_recovery參數,使mysqld跳過恢復步驟,將mysqld 啟動,將數據導出來然后重建數據庫。
innodb_force_recovery可以設置為1-6,大的數字包含前面所有數字的影響。
1. (SRV_FORCE_IGNORE_CORRUPT):忽略檢查到的corrupt頁。
2. (SRV_FORCE_NO_BACKGROUND):阻止主線程的運行,如主線程需要執行full purge操作,會導致crash。
3. (SRV_FORCE_NO_TRX_UNDO):不執行事務回滾操作。
4. (SRV_FORCE_NO_IBUF_MERGE):不執行插入緩沖的合並操作。
5. (SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日志,InnoDB存儲引擎會將未提交的事務視為已提交。
6. (SRV_FORCE_NO_LOG_REDO):不執行前滾的操作。
注意
a 當設置參數值大於0后,可以對表進行select,create,drop操作,但insert,update或者delete這類操作是不允許的。
立即對數據庫做邏輯導出 ,完成之后將innodb_force_recovery設置為0 ,innodb_purge_thread=1 ,然后重建數據庫 。