拿到备份的文件如下:
这里frm文件由于数据表结构是已知的,所以没有用。
ibd文件为存储的数据文件
1:本地新建一个新的数据库 :
终端进入:
cd /usr/local/mysql/data/
如果报没有权限则运行:
sudo chmod -R a+rwx /usr/local/mysql/data/
进入到data/test下
在新建的数据库中运行建表语句:
需要在建表语句后加上: ROW_FORMAT=COMPACT
执行:
ALTER TABLE xxxx DISCARD TABLESPACE;
解除表空间,ls查看会发现.idb文件已经被删除
在终端执行 open .命令打开访达
把需要的.ibd复制到test目录下
ls -l目录查看会发现 复制进去的.ibd文件不属于mysql
需要执行命令:
sudo chown mysql:mysql xxx.ibd
ls -l 执行后看到.ibd文件属于mysql则成功
最后执行命令:
alter table xxx import tablespace;
恢复数据成功。
ps:如果操作不成功,需要停掉mysql服务,删除相关的日志和数据库,命令如下:
rm -rf /usr/local/mysql/data/ib_logfile0
rm -rf /usr/local/mysql/data/ib_logfile1
rm -rf /usr/local/mysql/data/ibdata1
rm -rf /usr/local/mysql/data/btmp1
rm -rf /usr/local/mysql/data/test(数据库名)