2022年,致第一個感動,服務器數據庫報錯表丟失問題解決
瀏覽量: 次 發布日期:2023-09-11 09:18:02
2022年,致第一個感動,服務器數據庫報錯表丟失問題解決
去年2021年12月30日中午,我們公司的網站,業務系統突然都無法運轉,最終發現我們阿里云服務器自建mysql數據庫出問題。
我們服務器數據庫的多數業務數據庫的表都報錯同樣問題, Table '****' doesn't exist ,趕緊用shell方式先把一個著急的客戶需求做好后,便開始兩天兩夜的尋求解決問題之道,搜索了好多各種問題,最終感覺原因貌似ibdata*文件壞的可能性大。因為我們用的INNODB engine引擎, 每個表的后臺數據文件 *.frm 和 *.ibd都在,所以開始網上的各種方案的嘗試數據恢復,1月1日晚曾經晚上熬夜到凌晨4點 :-(
中間還曾到某寶找專業數據恢復的技術人員,遠程登陸查看問題和報價,一個靠譜的店家報價:最壞的情況是 一個table表的數據恢復的價格是2000,我們大概一個庫的表數量是40多個,這費用逆天了。若真花錢買這服務,感覺也是對我一個程序員大叔的恥辱。請原諒我把窮逼解釋得如此清新脫俗。
沒辦法繼續找方案,查mysql的官網的各種資料。功夫不負有心人。剛剛 1月3日凌晨3點,搞定了。哈哈哈哈。
恢復成功的表數據
解決方案如下,希望能幫到同樣問題的網友
上海數據恢復
1、安裝相同版本的mysql;
2、找回表結構(若有表結構,直接導入表即可)建立同名的表(InnoDB),隨意一個字段即可
關閉mysql服務,用需要恢復的.frm文件覆蓋新生成的.frm文件。接著修改my.ini配置innodb_force_recovery = 6進入恢復模式。啟動mysql。
啟動mysql,desc actcalss。我這里直接出現了表結構。若沒有,查詢日志,會提示該表列數。注釋innodb_force_recovery = 6,建立相同列數的表。重復以上步驟,會得到表結構。導出結構,刪除表,導入表結構。
3、.ibd文件包含tablespace id,所以需要修改恢復數據.ibd文件的tablespace id和新建立的相同??墒褂?a href="http://m.miyue8.com/tags/259.html" >winhex(編輯16進制)。打開新建的.ibd文件,得到tablespace id。
4、打開需恢復的.ibd文件,修改為 00 03。
5、停止mysql服務,保證innodb_force_recovery = 6。替換.ibd文件。啟動mysql。數據和結構都恢復了??梢詫С鰯祿徒Y構。
最后,教訓和感悟
一: 各位同行,切記做好數據庫和各種程序及源碼的安全備份。不要以為長時間沒出問題就某天不會出問題。我這個案例就是,大概五年多從沒出過這種狀況,但剛剛碰到了,雖然業務網站不是很重要,但是偶爾對我們公司業務幫助還是有的,重建的話,時間精力費用也不少。
. 超融合能解決數據一致性嗎?,超融合服務器和普通服務器的區別
. 服務器raid設置錯 數據如何恢復,服務器RAID設置錯誤導致數據丟失,如何恢復?
. sqlserver數據庫恢復掛起什么導致的,什么是SQL Server數據庫恢復掛起
. Oracle 恢復,數據文件版本與數據庫版本不一致,Oracle 恢復
. 服務器數據恢復一般要多久,網站服務器問題導致被k多久能恢復啊
. 服務器系統恢復選項修復不了,服務器系統恢復選項無法正常工作,導致系統無法恢復到指定的
. 服務器硬盤初始化能恢復,服務器硬盤初始化導致的數據丟失及恢復策略
. 數據恢復的公司,數據恢復先鋒:引領技術前沿,致力于您的信息安全
. 服務器raid設置錯 數據如何恢復,服務器RAID設置錯誤導致數據丟失的恢復方案
. 用友t3數據庫版本不一致,數據庫版本不一致問題解決方法揭秘