mysql 恢复数据方法(frm+ibd)

另外准备一份mysql环境,版本等要一样。

随便创建一个数据库

 

 

1.在里面建一个表 便结构需要和要恢复的表结构一致
CREATE TABLE `xxx` (
  `id` int(32) NOT NULL AUTO_INCREMENT ,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9021 DEFAULT CHARSET=utf8 

 

 

2. 移除表空间ALTER TABLE xxx DISCARD TABLESPACE;
3. 将ibd文件上传到数据库文件下,我这里路径是/var/lib/mysql/test2/。
4. 将ibd权限放开 chmod 777 /var/lib/mysql/test2/xxx.ibd
5. 导入表空间 ALTER TABLE xxx IMPORT TABLESPACE;
6. 运气比较好,40+表只有1个表不能直接把数据转过来,查看数据就会直接停掉mysql服务。
日志:InnoDB: Attempted to open a previously opened tablespace. Previous tablespace wittc1/tb_wittc_online_meeting uses space ID: 1 at filepath: ./wittc1/tb_wittc_online_meeting.ibd. Cannot open tablespace mysql/innodb_table_stats which uses space ID: 1 at filepath: ./mysql/innodb_table_stats.ibd
2015-05-21 13:02:08 7f02b42ec720  InnoDB: Operating system error number 2 in a file operation.应该就是网上说的tablespace id 问题,修改innodb_force_recovery无效。
没找到类似的错误日志:081010 11:47:40  InnoDB: Error: tablespace id in file 
'.test1product.ibd' is 1193, but in the InnoDB
InnoDB: data dictionary it is 1.
最后在mysql test数据库里执行上面操作,竟然成功了。。。过了几分钟mysql又崩掉了,问题也懒得看了,把ib_logfile ibdata 还有数据库里面那些数据删掉,重启
正在上传…
取消
。后来又发现一个问题,一些字长度不足,数据会被截掉,打开表前先把表字段长度检查下,修改完再打开。
数据库一定要备份啊,说不定就会被人坑了
正在上传…
取消

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值