分享:MySQL資料庫崩潰解決過程

曼妥思小丸子發表於2015-01-05

  經常遇到這樣的事情:莫名其妙關機,然後啟動藍色畫面,不能訪問,最後決定重灌系統。


  可惜這次的悲劇在於專案剛起步,暫且穩定,前段時間又一直忙於編碼,對後臺資料的備份沒有太在意,導致資料庫崩潰後只有上個月的備份資料。一直以為只要資料庫裝在d盤,c盤的覆蓋不會有影響,結果恰恰是自己的不在意導致整個恢復過程及其艱難,耗時一天終於搞定,其中不乏有灰心喪氣、準備放棄的想法。


  現把具體解決過程分享下吧:


  1、系統重灌前,出於小心為上,工作人員備份了c盤資料到e盤,同時d、e兩盤斷點,c盤資料系統更新。


  2、重灌完畢,安裝資料庫mysql,d盤中查詢昨天的資料庫檔案,一直沒找到,崩潰!最後只能找上個月的備份檔案。恢復資料庫成功後發現有些表打不開。(已經開始傷心了誒)


  3、初步判斷可能安裝的mysql有版本問題,決定安裝新版本的mysql。但是安裝不成功,後來經過摸索一番後發現是原來裝的mysql沒有解除安裝乾淨。


  4、3步完成解除安裝:刪除安裝目錄下的檔案、刪除配置檔案中的datadir變數目錄中的檔案、刪除資料庫資料儲存目錄中的檔案。這三步可以根除mysql,判斷是否清理成功的途徑就是在系統服務中檢視是否還有mysql服務。注意的是是否有這個服務!而不是是否啟動!


  5、如果重新安裝了mysql,安裝後還是啟動不了,並且徹底清除後再重新安裝還是不行的話只能再分析原因,查詢資料了。


  6、恢復上個月的資料庫備份成功後你會發現還是有些表打不開,提示表不存在,但是在mysql檢視視窗中卻能看到相應的表。很奇怪,也很糾結對吧!!!同時發現打不開的表的引擎都是innoDB的,而可以開啟的表的引擎則是MyISAMD的,由此判斷可能是引擎的原因啦!


  7、網上的解決辦法寫的是mysql不支援innoDB,在php的配置檔案中註釋掉skip-innodb這行即可解決。查詢伺服器配置檔案,發現已被註釋,應該不是這方面的原因。但是無意中發現配置檔案中的datadir變數指向的是c盤的某個目錄,突然想到可能當初安裝的時候資料庫檔案放到了c盤,還好剛開始有備份c盤檔案。


  8、查詢備份的c盤中的相應目錄,突然找到了昨天的資料庫檔案。超開心哈哈


  9、把最新的資料庫檔案複製到新安裝的資料庫目錄下發現還是不能開啟innoDB的表,這是什麼原因呢??查詢資料,瞭解到innoDB跟MyISAM儲存資料不一樣,字首的資料在上層目錄中,而且可能是多個表資料存一個檔案,後者每個表分三個檔案儲存,不同表間不相互影響。


  10、頭腦一熱,把昨天的資料庫檔案中的ibdata1檔案直接覆蓋了新安裝的資料庫中,啟動發現資料庫啟動不了了!悲劇!可能是覆蓋了原有的innoDB資料,導致新資料庫崩潰。切記,千萬不要覆蓋!不然又杯具了


  11、解除安裝資料庫後重新安裝mysql,恢復資料庫檔案,還是打不開innoDB的表!怎麼辦?鬱悶中。。。


  12、準備使用轉成的sql把innoDB的表結構先建起來,然後手工輸入丟失的資料,工作量不僅大,而且最重要的是我寶貴的資料都沒了!欲哭無淚啊


  13、絕望中朋友突然給我說可以在她機器上本地測試下昨天的資料庫備份,她安裝的是多備份,即使導致資料庫崩潰了,一鍵恢復就好了。想不到奇蹟真的出現了!我的資料都出現了誒!我的網站又可以重新執行了。


  總結:備份,備份!只有在資料庫崩潰的時候才知道它的價值!而且經過這次之後在這裡提醒一句:備份資料時,千萬一定要提前檢視備份資料庫是什麼引擎,然後確定需要備份的資料庫檔案,不知道資料庫儲存位置的朋友看過來:在MySQL目錄裡的my.cnf配置檔案中可找到。


  記得很久前看資料庫方面的一本書時,前言第一句就是,“沒有什麼東西比資料庫崩潰,更能讓DBA在深夜中驚醒”。現在真的相信了。


     原文:bbs.dbfen.com 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30068578/viewspace-1390571/,如需轉載,請註明出處,否則將追究法律責任。

相關文章