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

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

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

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

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

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

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

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

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

Mysql Binlog恢复步骤:

一、数据库停止对外服务

二、查看日志文件

show master logs;

   

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

flush logs;

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

show master logs;

 

 五、使用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,通过关键语句,查找误操作的时间戳,如下:

 

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

 

 六、时间戳转换

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

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

SELECT from_unixtime(‘1625385170’);

误操作时间点

 

最后备份时间点

 

 七、数据恢复

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

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

posted @   1~Q箱子  阅读(437)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示