记一次mysql根据.frm.ibd文件恢复数据
背景:
公司用的阿里云mysql 5.6数据库,阿里云的控制台上做了两天一备份的设置。当我发现我误操作drop了一张表之后,我从控制台上下载了备份的压缩包,解压之后拿到我drop的那张表(sys_users)的.frm.ibd文件
1:本地建一个相同的数据库(AA)和相同表结构的表(sys_users)
(一定要一摸一样的表结构)
(这一步之后,在mysql安装目录/data/AA/ 目录下你会发现sys_users.frm,sys_users.ibd文件)
2: 清除表空间 alter table sys_users
discard tablespace ;
(执行这个命令后 sys_users.ibd文件会消失)
3:关闭数据库
4:将你前面从阿里云拿到的sys_users.frm,sys_users.ibd放到mysql安装目录/data/AA/ 目录下
(该覆盖的覆盖)
5:启动数据库
6: 导入表空间 alter table sys_users
import tablespace;
7:navicat查看表数据有没有问题,如果有乱码或者字段错位,那可能是没有创建一摸一样的表结构,我曾卡在这里怀疑人生,😢
如果没问题,就可以用navicat的数据传输工具,将本地sys_users的数据传输到公司数据库,
结束!
总结一下吧:
数据肯定会丢失一部分的,阿里云上的备份是前一天的
开始采用的办法是根据binlog日志恢复数据,但是我却不知道数据库所在哪台服务器,更不知道数据库的安装目录,这是使用阿里云数据库的一个弊端,阿里云上恢复数据是要收费的哦。所以还是买阿里云的服务器,然后在服务器上安装mysql数据库吧
骄傲的程序员们,数据一定要备份,给自己一条后路😄