《MYSQL INNODB引擎下:根據(jù).frm和.ibd文件恢復(fù)表結(jié)構(gòu)和數(shù)據(jù)》要點:
本文介紹了MYSQL INNODB引擎下:根據(jù).frm和.ibd文件恢復(fù)表結(jié)構(gòu)和數(shù)據(jù),希望對您有用。如果有疑問,可以聯(lián)系我們。
記錄通過.frm和.ibd文件恢復(fù)數(shù)據(jù)到當(dāng)?shù)?/p>
.frm文件:保存了每個表的元數(shù)據(jù),包含表結(jié)構(gòu)的定義等;
.ibd文件:InnoDB引擎開啟了獨立表空間(my.ini中配置innodb_file_per_table = 1)產(chǎn)生的存放該表的數(shù)據(jù)和索引的文件.
以actclss表為例,布局如下
1、安裝相同版本的mysql;
2、找回表布局(若有表布局,直接導(dǎo)入表即可)
建立同名的表(InnoDB),隨意一個字段即可
關(guān)閉mysql服務(wù),用必要恢復(fù)的.frm文件覆蓋新生成的.frm文件.接著修改my.ini配置innodb_force_recovery = 6進(jìn)入恢復(fù)模式.啟動mysql.
啟動mysql,desc actcalss.我這里直接出現(xiàn)了表布局.若沒有,查詢?nèi)罩?會提示該表列數(shù).注釋innodb_force_recovery = 6,建立相同列數(shù)的表.重復(fù)以上步驟,會得到表布局.
導(dǎo)出布局,刪除表,導(dǎo)入表布局.
3、.ibd文件包括tablespace id,所以需要修改恢復(fù)數(shù)據(jù).ibd文件的tablespace id和新建立的相同.可使用winHex(編輯16進(jìn)制).打開新建的.ibd文件,得到tablespace id.
4、打開需恢復(fù)的.ibd文件,修改為 00 03.
5、停止mysql服務(wù),保證innodb_force_recovery = 6.替換.ibd文件.啟動mysql.數(shù)據(jù)和布局都恢復(fù)了.可以導(dǎo)出數(shù)據(jù)和布局.
注意:
1、數(shù)據(jù)量大時,查詢時mysql會異常停止服務(wù),可修改my.ini配置或使用程序分批導(dǎo)出;
2、.ibd文件過大時,winHex修改文件后無法保留,此時可使用linux的vim進(jìn)行16進(jìn)制編輯和保留.
vim actcalss.ibd -b 二進(jìn)制的方式打開 (文件過大時,需耐心等待一會兒)
在vim模式下,輸入 :%!xxd 進(jìn)行16進(jìn)制編纂
編纂完后,使用 :%!xxd -r 轉(zhuǎn)換為二進(jìn)制
:wq!保留即可
· 學(xué)IT,就來中公優(yōu)就業(yè):http://www.ujiuye.com/
· 2017年【中公教育】特別推出2017年就業(yè)促進(jìn)計劃,500萬就業(yè)基金助你成為IT達(dá)人
詳情請戳http://www.ujiuye.com/zt/jycj/?wt.bd=bgz
· 什么?海量IT學(xué)習(xí)材料白給你都不要?別想了,加群搶:584539956
維易PHP培訓(xùn)學(xué)院每天發(fā)布《MYSQL INNODB引擎下:根據(jù).frm和.ibd文件恢復(fù)表結(jié)構(gòu)和數(shù)據(jù)》等實戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/7071.html