復原步驟
1、建立資料庫(隨意建立)
#2、建立資料表(備註:表結構要和要恢復的表結構一致,row_format要和ibd文件的row_format一致,否則,會提示兩者不一致。當前row_format=dynamic)
3、表的屬性查看
我們使用:show table status like ‘matlab’\G
,查看表的屬性
備註:建立表格時候的row_format和表格屬性的不一致,基於innodb是,要把row_format設定成dynamic時,需要修改mysql的全域配置,直接在myql指令中修改:set global innodb_file_format=Barracuda;
#4、表錯誤訊息檢視show warnings
5、說明
我們在復原表的時候,要保證row_format和ibd檔案的一致,如果ibd檔案是compact的話,需要建表的時候,設定成row_format=compact,在恢復的時候,自行解決,從第6步開始,重點說明如何去恢復。
6、恢復第一步:移除表空間
**alter table matlab DISCARD TABLESPACE;**
#7、恢復第二步:將備份的ibd文件,放到mysql->data->建立的資料庫名稱->,將ibd拷貝到此目錄下,如下圖所示
具體路徑查看
-- 使用sql查询数据目录 **show global variables like '%datadir%';**
8、恢復第三步:重新導入表空間
**alter table matlab IMPORT TABLESPACE;**
9、當執行到上一個步驟完成後,我們發現資料庫中的資料已經完全恢復了
10 、資料表的結構一定要和恢復前的資料表結構一致,否則恢復失敗,導致mysql進程重啟,詳細情況需要查看mysql的error日誌進行分析,另外,mysql的CE工具提供了便捷的mysql參數配置修改功能
補充:Innodb與MyISAM儲存檔案的差異
Innodb儲存檔案分為:.frm,.idb
.frm:儲存表定義
.ibd:儲存資料與索引
MyISAM儲存檔案分為:.frm,.myd,.myi
.frm:儲存表定義
.myd:儲存資料
. :儲存索引
以上是Mysql怎麼透過ibd檔恢復數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!