mysql innodb引擎表,只剩下数据库目录没有ibdata1如何恢复

版本mysql5.7 innodb引擎,采用了独立表空间配置即innodb_file_per_table=1 ,ibdata1损坏,或者物理迁移直接拷贝数据库整体目录,包括frm,ibd文件可以采用一下方法恢复
1.先根据已有的frm新建所有表,采用工具mysqlfrm
安装包:centos7为例
mysql-utilities-1.6.5-1.el7.noarch.rpm 
mysql-connector-python-2.1.8-1.el7.x86_64.rpm
可以在官网直接下载

/usr/bin/mysqlfrm --basedir=/usr/local/mysql --port=3307 --user=root /root/ytdy_test/ > /root/test_frm.sql ####port 不要采用已经启用的数据库端口,/root/ytdy_test 是保存的frm和ibd文件

每个创建语句没有以;分号结尾,通过subline工具正则替换

连接mysql,创建相同名字数据库,create database ytdy_test;
use ytdy_test;
source 刚刚编辑的文件
可以发现表已经创建;
执行下面语句;将新建的表的ibd文件删除 
 select concat('alter table ',table_name,' discard tablespace;') from information_schema.tables where table_schema='ytdy_test' into outfile '/opt/mysql/data/exptest.sql';
use ytdy_test;
source /opt/mysql/data/exptest.sql
将/root/ytdy_test中的ibd文件整体copy到新数据库目录下,执行授权;chown -R mysql.mysql *.ibd
执行: 
 select concat('alter table ',table_name,' import tablespace;') from information_schema.tables where table_schema='ytdy_test' into outfile '/opt/mysql/data/imp.sql';
 use ytdy_test;
source /opt/mysql/data/imptest.sql
批量导入
即可成功

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值