mysql恢复误删除的历史数据

场景:用docker部署了mysql,没有做额外的处理,只部署了一个,不小心误删除了大量数据

我用的是mysql8.0的docker镜像生成的容器,默认配置中mysql的主要数据都在/var/lib/mysql中,可挂载也可不挂载出去,如果mysql无法启动了,也可以通过docker cp的方式将无法启动的容器中的文件拷贝出来,将它放入新的mysql容器中。

最开始我把注意力放在.ibd文件中,但各种操作很麻烦,而它适合恢复整体数据,而不是历史数据,读取这个文件内容也很麻烦。然后我便想到SQL操作日志。

/var/lib/mysql文件夹下可以看到binlog.000001这样的文件,这样的文件是编码过的,我们无法直接查看,为了方便查看,使用mysqlbinlog --base64-output=DECODE-ROWS -v binlog.000001 > fay-test.sql命令来将其转出到新的sql文件中,因为binlog本身记录就是sql语句的日志。这里只是个例子,随着数据的增加会有binlong.000002、binlog.000003、…。

下面是我自己生成的sql文件中的一部分:

/*!*/;
# at 50906
#200625 11:48:39 server id 1  end_log_pos 51019 CRC32 0x34457801 	Table_map: `huashi`.`wx_user` mapped to number 139
# at 51019
#200625 11:48:39 server id 1  end_log_pos 51133 CRC32 0x7308e85d 	Delete_rows: table id 139 flags: STMT_END_F
### DELETE FROM `huashi`.`wx_user`
### WHERE
###   @1=9
###   @2='123'
###   @3='123123'
###   @4=123123
###   @5='123123'
###   @6='123123'
###   @7='123123'
###   @8='123123'
###   @9='1231231'
###   @10=NULL
###   @11=NULL
###   @12=NULL
###   @13=NULL
###   @14=NULL
###   @15=NULL
###   @16=NULL

虽然不是我们平时经常写的sql语句,但我们分析下后依然可以很清晰的看出其中的意思,我们不难看出每个字段的值,@1代表第一个字段。我们得到了这些历史SQL操作数据后,便可以进行数据恢复了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL数据库是一款非常常用的关系型数据库软件,但是在使用过程中,有时可能会误删除数据,在这种情况下,需要进行数据恢复。 首先,MySQL数据库的删除操作并不是真正的永久删除,而是将数据标记为已删除状态,并将其放入回收站中。因此,如果误删除数据,第一步应该是立即停止对数据库的操作,以免新数据覆盖已删除数据。 接下来,可以通过MySQL提供的数据恢复工具来恢复误删除数据MySQL提供了两种主要的恢复工具:备份和日志恢复。备份恢复需要先备份数据,在误删除之后将备份数据恢复数据库中;而日志恢复则是通过MySQL的binlog日志来进行数据恢复。 备份恢复的方法比较简单,但是需要提前备份数据,并且在误删除之后不能再进行任何操作。而日志恢复操作比较复杂,需要熟练掌握MySQL的日志恢复机制,对于一些小型数据库系统管理员来说比较难以掌握。 最后,如果以上两种方法均无法恢复数据,还可以考虑使用第三方数据恢复工具,例如EaseUS Data Recovery、Recuva等软件,但是需要注意的是,这些工具不一定都能够100%恢复数据,并且使用过程中也需要遵循一定的操作规范,否则可能会造成数据进一步损坏。 总之,误删除MySQL数据数据是一种常见的问题,但是只要掌握了一些基本的数据恢复方法,就可以尽可能地避免数据丢失。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值