适用场景:

只有ibd文件 ,表结构未知

mysql8以后 只有ibd表内容 没有frm表头文件了

恢复步骤:工具下载:恢复工具

1. ibd 转sdi

通过mysql自带工具实现 idb2sdi

2 生成后使用工具进行以下操作

1.创建同名数据库
2.创建相同的表
3.使用ALTER TABLE 数据库名.表名 DISCARD TABLESPACE;
4.将ibd文件拷贝到数据库的数据目录下
5.使用ALTER TABLE 数据库名.表名 IMPORT TABLESPACE; 

注:

通过sdi获取数据库版本

"type": 1,
	"id": 2130,
	"object":
		{
    "mysqld_version_id": 80023,

80023 表示mysql 8.0.23

运行工具生成表结构:

create table `gs_shop_banner`(
	`id` varchar(32) comment 'id',
	`banner_navigation_id` varchar(32) comment '轮播图导航id',
	`image_url` varchar(120) comment '图片地址',
	`text` varchar(64) comment '文字',
	`jump_url` varchar(120) comment '跳转地址',
	`speed` float comment '播放速度',
	`idx` int comment '排序',
	`terminal` int comment '终端[10=2b 20=2c]',
	`pc_show` int comment '是否PC显示',
	`shop_id` varchar(32) comment '店铺ID',
	`merchant_id` varchar(32) comment '商家ID',
	`cdate` datetime comment '创建时间',
	`udate` datetime comment '更新时间',
	`flag` tinyint(1) comment '逻辑删除标记',
PRIMARY KEY (`id`)) ENGINE = InnoDB CHARACTER SET = utf8 comment '';

复制到mysql客户端 生成空表

生成discard.sql

ALTER TABLE bp_i18n DISCARD TABLESPACE;
ALTER TABLE fy_activity DISCARD TABLESPACE;
ALTER TABLE fy_activity_goods DISCARD TABLESPACE;
ALTER TABLE fy_activity_user DISCARD TABLESPACE;
ALTER TABLE fy_advert DISCARD TABLESPACE;
ALTER TABLE fy_pay_records DISCARD TABLESPACE;
ALTER TABLE fy_site_floor_union DISCARD TABLESPACE;
ALTER TABLE fy_union DISCARD TABLESPACE;
ALTER TABLE fy_user_wallet DISCARD TABLESPACE;
ALTER TABLE gs_access_log DISCARD TABLESPACE;
ALTER TABLE gs_category_brand DISCARD TABLESPACE;
ALTER TABLE gs_corp_cert_dict DISCARD TABLESPACE;
ALTER TABLE gs_corp_type_cert DISCARD TABLESPACE;
ALTER TABLE gs_corp_type_dict DISCARD TABLESPACE;
ALTER TABLE gs_data_article DISCARD TABLESPACE;
ALTER TABLE gs_data_article_category DISCARD TABLESPACE;

把ibd文件复制到mysql的data/数据库/ 目录下

再执行import.sql

ALTER TABLE bp_i18n IMPORT TABLESPACE;
ALTER TABLE fy_activity IMPORT TABLESPACE;
ALTER TABLE fy_activity_goods IMPORT TABLESPACE;
ALTER TABLE fy_activity_user IMPORT TABLESPACE;
ALTER TABLE fy_advert IMPORT TABLESPACE;
ALTER TABLE fy_pay_records IMPORT TABLESPACE;
ALTER TABLE fy_site_floor_union IMPORT TABLESPACE;
ALTER TABLE fy_union IMPORT TABLESPACE;
ALTER TABLE fy_user_wallet IMPORT TABLESPACE;
ALTER TABLE gs_access_log IMPORT TABLESPACE;
ALTER TABLE gs_category_brand IMPORT TABLESPACE;
ALTER TABLE gs_corp_cert_dict IMPORT TABLESPACE;
ALTER TABLE gs_corp_type_cert IMPORT TABLESPACE;
ALTER TABLE gs_corp_type_dict IMPORT TABLESPACE;
ALTER TABLE gs_data_article IMPORT TABLESPACE;
ALTER TABLE gs_data_article_category IMPORT TABLESPACE;

通过以上操作 发现数据已恢复到数据库里

 

更多推荐