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