记一次Mysql数据恢复

注:以下内容是从各位大神学习来的(因查找了太多的内容,已经记不清出处了,所以,你说是你的,那就是你的!),以及自己的总结,如果有不对的地方请指正!!!第一次写,轻喷!!!

原因:因为失误清空了测试人员的测试专用表数据,本来想清的是额外的表,无奈电脑卡顿,导致操作之后就不可挽回了。

具体操作:暂且称此表为A_table,navicat中找到此表,右键,清空(并不是截断表truncate),因为是测试人员的数据,故没开二进制日志mysqlbinlog,也没有任何备份。如果开启了独立表空间,则每张表创建成功后,都会在相应的数据库下面生成与表名一致的A_table.frm和A_table.iba文件,其中A_table.frm存储的是表结构,A_table.iba文件存储的是数据。

本文只介绍知道表结构之后,拥有.iba文件怎么恢复(实测:如果是手工的清除数据,此种方法并不能恢复,但是无奈网上说的不是十分清楚,所以在此,希望能帮助大家,少走弯路,本次恢复失败,因为是手工清除数据,那么此种方法适合什么情况下恢复数据呢,比如:数据库坏了,或者硬盘坏了,数据库启动不了,但是能找到.iba和.frm文件那么就可以恢复,当然如果有备份和Binlog,自然不需要这种办法)

查看是否开启独立表空间:mysql> show variables like ‘innodb_file_per_table’;(方法很多,一种就够用)
| Variable_name | Value |
| innodb_file_per_table | ON 表示开启独立表空间,接下来
1、创建新数据库,创建相同表结构的表(表名称和结构相同)(一定要新建数据库,除非你觉得即使损坏了也不重要)
2、执行alter table A_table discard tablespace;(卸载表空间操作)
3、删除原表的ibd文件,在data目录下(此目录如果是windows系统,在C:\ProgramData\MySQL\MySQL Server 5.6\data下,linus系统,自己找找吧)
4、复制备份表的ibd文件
5. ALTER TABLE asset_user_product_detail IMPORT TABLESPACE; SHOW WARNINGS;(重新导入表空间)(如果报文件不存在,那么你就要看linus下文件的所有者和所有组了,需要改为一致,Linus下修改权限和所有组,网上方法很多,此次不贴出来了,可能会报一些警告,但是并不影响数据恢复)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值