1. 程式人生 > >mysql InnoDB idata1檔案損壞,單個恢復表格資料

mysql InnoDB idata1檔案損壞,單個恢復表格資料

伺服器異常斷電,導致mysql某一個table .idb檔案損壞,在idata1頁存在異常損壞;

在開啟mysql服務一開啟就之後據自動關閉,提示異常服務終端異常;

mysql資料維護人員一定要有定時備份資料,利用mysql worhbench 的management中的data export 匯出資料,可以分結構與資料分開匯出,好習慣要持續;

之後自己再學習怎麼做到自動備份資料!!!

解決步驟:

伺服器重新安裝mysql,將之前的安裝解除安裝乾淨;

現在開始學習怎麼一個一個表格來恢復資料:(建議在自己電腦localhost資料庫中操作

1、先將伺服器路徑下的data拷貝到自己本機硬碟中,命名old_data;

2、隨便新建一個schema;新建table;table命名為你想要恢復的table名,隨便新建一列(不管列名內容);斷開mysql服務,

3、將old_table下的table.ifm拷貝覆蓋現有的.ifm,再連線mysql服務;執行select語句;報錯:該表table不存在;原因是你的table列名數不夠;

4、進入.err檔案檢視,clt+F查詢table名,告知你table原本有多少列;

5、得知多少列數之後,刪除表格,重新建表,修改列表個數,重複第三步,你會得到table表結構;

6、執行語句;alter table table名 diascrd tablespace;

7、你會發現在data路徑下schema檔案中出現了table名.ibd檔案被刪除;

8、將old_table下的table.idb檔案複製貼上到現有檔案下;執行語句alter table table名 import tablespace;出現警示,不過沒有關係的;

9;再次去執行select語句;就可以看到old_table的資料還原在現有檔案中;

10、匯出現有的資料,再匯入資料到伺服器上去;

雖然過程新辛苦,一個龐大的資料庫一個一個table匯入會比較麻煩;還是比較笨的方法的;