使用.ibd文件恢复Mysql数据库数据

文章介绍了在MySQL数据库出现问题后,如何通过查找数据目录,创建匹配的表,解除和导入表空间,特别是处理ERROR1030(HY000):Goterror194错误,来恢复InnoDB存储引擎中的数据。
摘要由CSDN通过智能技术生成

问题发现

前段时间,数据库莫名其妙G了,然后起了很久也起不来,于是决定重新安装mysql(以mariadb为例),好再原数据库的文件还在,准备把数据库装好后,执行原数据库.ibd文件进行数据恢复。

问题解决

第一步:查找mysql数据目录

如果是普通安装,可以使用mysql命令查看数据库目录位置:

show global variables like "%datadir%";

如果是docker安装,使用docker命令查看资源路径:

docker ps

在这里插入图片描述
查看容器详细信息:

docker inspect mariadb

找到红线标记处,为资源目录地址
在这里插入图片描述

第二步:创建表

这里不做演示,可以手动创建或者把其他服务器的表结构复制进来。

注意:创建的表结构和.ibd文件结构保持一致。

比如:Row_format保持一致,查询表属性,执行命令:

show table status like '<table_name>'\G

在这里插入图片描述

第三步:解除表空间

登录mysql数据库,执行命令(无需关闭数据库):

ALTER TABLE <table_name> DISCARD TABLESPACE;

在这里插入图片描述
执行完后,数据库文件下的.ibd文件会消失。

如果涉及数据库较多建议使用脚本执行。

第四步:复制原数据库.ibd文件

找到原数据库目录,将需要恢复的.ibd文件复制到新数据库目录中。

第五步:导入表空间

执行命令(无需关闭数据库):

ALTER TABLE <table_name>  IMPORT TABLESPACE;

在这里插入图片描述
执行完,刷新数据库,可看到数据已经恢复。

再执行的过程中,可能会有突发情况。

ERROR 1030 (HY000): Got error 194 “Tablespace is missing for a table“ from storage engine InnoDB

解决:ERROR 1030 (HY000): Got error 194 “Tablespace is missing for a table“ from storage engine InnoDB

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值