針對之前好好的Mysql服務器進程能正常啓動,忽然啓動起來的時候報:mysql
經過上面的技術文章說明找到:innodb_force_recovery=6sql
對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):不執行前滾的操做。服務器
====================================================================性能
好了,配置好值爲6就能夠正常啓動服務了。可是你的整個數據庫進入只讀狀態,不能進行任何更新修改操做。嘗試備份會出現服務中止的狀況......My goooooooood...........優化
====================================================================spa
佔時沒有找到更好的應對策略。由於是數據庫順壞了,如今的表數據只能是一個只讀狀態,而實際中數據纔是最重要的,因此咱們就將全部能查看的數據進行導出吧。線程
====》接着一個個導出好了sql文件,中途會發下有些表是沒法導出的,這個時候就須要進一步將DDL語言複製,手動執行,生成表的模型到新的數據庫實例上去。若是這個表裏面有數據,那麼你就只能經過日誌去恢復了,我查看了日誌,能夠經過搜索日誌裏面的表名進行定位錯誤。因爲我遇到的這個數據表沒有數據,因此也就沒有恢復了。日誌
====》一個個數據導出來後,就進行一次備份吧......進程
能夠採用如下手段預防mysql 表損壞:
1 、按期使用myisamchk 檢查MyISAM 表(注意要關閉mysqld ),推薦使用check table 來檢查表(不用關閉mysqld )。
2 、在作過大量的更新或刪除操做後,推薦使用OPTIMIZE TABLE 來優化表,這樣既減小了文件碎片,又減小了表損壞的機率。
3 、關閉服務器前,先關閉mysqld (正常關閉服務,不要使用kill -9 來殺進程)。
4 、使用ups 電源,避免出現忽然斷電的狀況。
5 、使用最新的穩定發佈版mysql ,減小mysql 自己的bug 致使表損壞。
6 、對於InnoDB 引擎,你能夠使用innodb_tablespace_monitor 來檢查表空間文件內文件空間管理的完整性。
7 、對磁盤作raid ,減小磁盤出錯並提升性能。
8 、數據庫服務器最好只跑mysqld 和必要的其餘服務,不要跑其餘業務服務,這樣減小死機致使表損壞的可能。
9 、不怕萬一,只怕意外,平時作好備份是預防表損壞的有效手段。