mysql利用ibd文件恢復表數(shù)據
談到mysql的.ibd文件,我們就會想到innodb引擎。在生產庫中,由于innodb支持事務,也被廣泛應用。因此,我最近也上網查了一些資料,自己也親自實踐過。希望這篇文章能幫到需要的你,如果文章哪里寫的不對,還請各位大佬指正。
在講恢復之前,我們先介紹mysql的一個參數(shù)innodb_file_per_table,這個參數(shù)在配置文件中有0和1兩種參數(shù)類型。當我們把這個參數(shù)設置為0,再創(chuàng)建一張innodb表(下文為test表)。在數(shù)據存放的地方(可以通過SHOW VARIABLES LIKE 'datadir' 查看)只會創(chuàng)建一個test.frm(表結構定義文件)。而寫入的表數(shù)據則會存放到ibdata*這個文件中。當我們把這個參數(shù)設置為1,那么創(chuàng)建表時,就會生成test.frm和test.ibd兩個文件。
恢復過程只有簡單的5步:在備份數(shù)據庫中找到test表的建表語句,執(zhí)行建表語句。在數(shù)據庫連接工具中執(zhí)行ALTER TABLE test DISCARD TABLESPACE;用于刪除test.ibd,不能直接物理刪除。將無損的test.ibd上傳到和test.frm同級目錄。在linux系統(tǒng)中修改ibd文件擁有者為mysql:chown mysql:mysql test.ibd。在數(shù)據連接工具中執(zhí)行ALTER TABLE test IMPORT TABLESPACE;將數(shù)據導入表空間。
下一篇:MYSQL存儲引擎InnoDB(八十五):InnoDB錯誤處理