记一次mysql 误删后的恢复记录

记一次mysql 误删后的恢复记录

  本文简单记录基于window环境下的MySQL误删后恢复的记录。

  本人由于一时疏忽大意,用Navicat导出的某张表的表结构(a.sql文件中),原本想打开这个文件,修改表明后,在创建一张新表,

奈何,手速有点控制不住,直接拖到了Navicat中,瞬间,懵逼了,表被删除重建了。这张表记录着收费的明细,重要性不言而喻。

不一会客户电话就狂轰乱炸,虽然知道知道MySQL有备份文件+binglog可以恢复,但是从来没有试验过,这时手心已冒汗。只能找度娘来帮忙。

本文将恢复过程的做一次记录。

  Binlog数据恢复是应用于数据库自最后一次备份后,期间由于某种原因,引起数据丢失后的恢复。

当引起数据丢失的时候,为了保险起见,应立即停止对外服务。

Mysql Binlog恢复步骤:

一、数据库停止对外服务

二、查看日志文件

show master logs;

 记一次mysql 误删后的恢复记录  

三、刷新binlog,让后续的日志写入新的日志件,避免当前日志数据太多,查找关键点费时。

flush logs;

四、flush logs,查看日志文件,就会比上次多了最后一个文件,那么数据丢失的操作应该在倒数第二个文件

show master logs;

 记一次mysql 误删后的恢复记录

 五、使用mysqlbinlog查看日志,查找误操作的时间点

由于日志文件是二进制文件,所以需要用到mysqlbinlog导出转换人眼能够看懂的记录。

mysqlbinlog MySQL安装的目录bin

通过以下命令将日志导出,在E盘test.sql文件

C:\Program Files\MySQL\MySQL Server8.0\bin>mysqlbinlog.exe E:\\WINDOWS-4561231H-bin.000074 >E:\\test.sql

执行完成后。

打开E:\\test.sql 文件Ctr+F,通过关键语句,查找误操作的时间戳,如下:

 记一次mysql 误删后的恢复记录

同理,查找自上次备份时间戳,我们是当天23点备份,所以可以通过时间字符(下图高亮部分是我们要找的时间字符)查找,通过人工判断找到时间戳

 记一次mysql 误删后的恢复记录

 六、时间戳转换

通过上一步找到上次备份的时间戳和误操作的时间戳,那就可以根据这个时间范围,进行恢复。

在进行恢复之前,可以通过下面的语句进行转换成年月日格式的时间。

SELECT from_unixtime(‘1625385170’);

误操作时间点

 记一次mysql 误删后的恢复记录

最后备份时间点

 记一次mysql 误删后的恢复记录

 七、数据恢复

1、首先将备份还原

2、使用binlog文件,通过以上步骤找到的时间范围,来恢复未备份的数据

mysqlbinlog --start-datetime="2021-07-03 23:02:12" --stop-datetime="2021-07-04 15:52:50" -d testdb D:\\WINDOWS-4561231H-bin.000074 >mysql -uroot -pXXX testdb

 这次血淋淋的教训,到此完结。

记一次mysql 误删后的恢复记录

上一篇:shell脚本 一键部署 ——LNMP 架构(Nginx Mysql PHP Discuz!论坛)含可复制代码


下一篇:基于SpringBoot的药店管理系统java药房管理系统(源码+数据库文件+文档)