情況描述:伺服器硬碟損壞,伺服器換了個新硬碟 ,然後老硬碟插在上面。掛載在這台機器。可以從老硬碟裡面拿到資料。只拿到了裡面的mysql資料資料夾,把資料資料夾覆蓋新的伺服器mysql資料資料夾啟動報錯!!!報錯!!!錯!!!。
資料檔案如下:
於是覺得不能使用覆蓋檔案的方式還原資料,得使用科學方法恢復。google之……
找到解決辦法如下:
可以發現資料目錄下有對應資料庫名稱的資料夾,資料夾下有很多 表名.ibd 檔案,這些檔案其實就是資料,我們要利用它們來恢復
恢復步驟:
1.在新庫裡面建立結構相同的資料庫和表(這個可以根據伺服器備份資料或本地資料庫來弄)
2.使用 alter table test discard tablespace; 丟棄表空間(test=表名,需要對每張表執行一次該命令,可以先在本地把每條命令編輯好 一次執行)
ps:執行完後發現新庫資料資料夾裡 tsst.idb 已被刪除
3.把老資料資料夾下的 test.idb 檔案複製到新資料資料夾下(test=表名,需要對每張表執行一次該操作)
4.再執行 alter table test import tablespace; 匯入表空間(test=表名,需要對每張表執行一次該命令)
然後資料就恢復了。可以愉快的玩耍了~~~~
MySql通過資料目錄恢復資料
0.停止mysql服務 1.備份新的資料目錄下面的my.ini,data ibdata1檔案 2.將待恢復資料庫資料夾下的ibdata1,my.ini檔案拷貝到新的mysql資料目錄下 3.在my.ini任意位置新增innodb file per table 6 4.正常啟動mysql,待恢復資料庫...
MySql通過資料庫檔案恢復資料庫
以表 table 為例 如型別是myisam,資料檔案則以 table.frm table.myd table.myi 三個檔案儲存於 data databasename 目錄中.如型別是innodb,資料檔案則儲存在 innodb data home dir 中的ibdata1檔案中 一般情況 結...
RMAN恢復資料檔案
這個恢復測試主要演示了在歸檔模式下使用 rman 對資料庫的完整恢復 首先備份資料庫 刪除test01.dbf 資料檔案模擬介質故障 再次啟動資料庫 執行在歸檔模式下 sql startup oracle 例程已經啟動。total system global area135338868 bytes ...