sql資料庫啟動不了
故障處理
移除當前使用的 redo log 文件,然後可以試著啟動資料庫,結果啟動失敗!
提示:
[ERROR] InnoDB: Page [page id: space=0, page number=0] log sequence number 178377412422 is in the future! Current system log sequence number 165909011496.
這樣的錯誤,這是因為 MySQL writer 線程按照配置的時間間隔以 page 為單位刷新 buffer 數據到磁碟。當數據刷新到磁碟的時候,新寫入磁碟的 page 包含了較新的 LSN,此時系統 system 表空間頭的 LSN 並沒有同步更新,通常這是檢查點線程的工作。在正常的崩潰恢復中,MySQL 可以藉助 redo log 來進行前滾和回滾,但是此時 redo log 已經被我們刪掉了,MySQL 無法進行恢復操作。此時,我們設置 innodb_force_recovery=3 來強制啟動 MySQL,仍然啟動不成功,改成 4 後啟動了!
再使用 mysqlmp 導出備份,結果噩夢又降臨了!MySQL 又 crash 了。
提示:
InnDB: Failed to find tablespace for table......
設置參數 innodb_force_recovery=5,資料庫仍然啟動失敗,再設置成 6,啟動成功!用 sqlmp 順利把數據備份出來了!
再初始化資料庫,把剛剛備份的資料庫導入,資料庫恢復成功完成!
參數說明
這里的關鍵是設置 innodb_force_recovery 參數,對應這個參數的說明如下:
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:不執行前滾的操作。
2. SQL伺服器不能啟動
原因:SQL伺服器未獲得計算機啟動許可權。
解決方法如下:
1、打開安裝的SQL資料庫,點擊進入,進入後, 選擇右上方「服務管理器」選項;
2、出現SqlServer服務界面,在此頁面,點擊啟動選項;
3、啟動完畢後,仍在服務管理器頁面,下拉選擇SqlServerAgent頁面,在此頁面,仍點擊啟動選項:
4、啟動完畢後,重新點擊進入Sql伺服器登陸頁面,重新輸入賬號與密碼即可啟動登陸。