MySQL误delete删数据恢复指南

一、数据恢复前的必要认知

  1. 删除操作的本质:DELETE语句执行的是逻辑删除,实际数据仍驻留在存储文件中直到被覆盖
  2. 数据恢复黄金时间:建议在删除后立即停止数据库写入操作,防止InnoDB的Purge线程清理undo日志
  3. 恢复成功率三要素
    • Binlog是否开启及保存周期
    • 事务引擎类型(InnoDB/MyISAM)
    • 磁盘空间剩余量(决定数据被覆盖概率)
  4. 操作数据库进行更新、删除时,先备份、先备份、先备份,重要事情说三遍
  5. 注意:生产的数据企业基本都会有备份,不同企业不同。如果误使用delete删除了数据,千万不要慌

二、核心恢复方案详解

Binlog解析恢复

前提条件

  • 已开启Binlog
  • Binlog格式为ROW或MIXED
  • Binlog文件未轮转删除

详细操作流程
1、查看binlog是否开启

#返回 ON 表示开启
SHOW VARIABLES LIKE 'log_bin';

2、定位binlog文件位置(主要还是看my.ini中配置的地址在哪里)

SHOW VARIABLES LIKE 'datadir';

在这里插入图片描述
重启后会在目录中生成如下的两个文件。
在这里插入图片描述
3、查看当前正在写入的log-bin文件,

SHOW MASTER STATUS;

在这里插入图片描述

4、找到logbin文件后,执行如下操作

#windows系统到bin目录找到mysqlbinlog然后去执行
#--start-datetime 和 --stop-datetime 删除操作执行的时间范围
#将 D:\Enviroment\MySQL\DATA\log-bin.000001 替换为实际的 log-bin.000001 的文件路径
mysqlbinlog.exe  --base64-output=decode-rows -v --start-datetime="2025-05-22 08:50:00"  --stop-datetime="2025-05-22 09:30:00" "D:\Enviroment\MySQL\DATA\log-bin.000001" >log-bin.txt

log-bin.txt 的文件如下:
在这里插入图片描述
数据量少的的话,可以手动操作,按照log-bin的字段值手动添加。
数据量大的情况根据自己的表结构编写脚本进行呢 处理

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐