sql操作删除掉的数据如何恢复 MySQL 实战案例 ——模拟 误删数据,然后用 binlog 回放恢复 的完整流程

MySQL误删数据急救指南:基于Binlog日志的实战恢复详解 若单个事务(如大表 DELETE)产生的日志量超过当前要落入的binlog文件 的max_binlog_size,该事务会跨多个 binlog 文件存储。直接指向binlog事件的物理存储位置(如 # at 54321),通过解析binlog文件的固定偏移量定位。:一个 5GB 的事务可能分布在 mysql-bin.000001~mysql-bin.000005 中。MySQL 默认通过 max_binlog_size 控制单个 binlog 文件大小(默认 1GB) 阅读详情

目录

🛠️ MySQL 误删数据恢复实战案例

📌 前置条件

1️⃣ 准备测试表与数据

2️⃣ 模拟误删操作

3️⃣ 假设我们已经提交(无法直接 rollback)

4️⃣ 找到对应的 binlog 文件

5️⃣ 查看 binlog 内容

6️⃣ 找到误删的 SQL

7️⃣ 恢复数据

✅ 方式一:手动 INSERT

✅ 方式二:直接回放 binlog 到误删前

8️⃣ 验证数据恢复

✅ 总结

删库很危险,跑路要尽快🤪🤪🤪


🛠️ MySQL 误删数据恢复实战案例

📌 前置条件

  • 使用 MySQL InnoDB 引擎

  • 已开启 binlog(二进制日志)

检查是否开启 binlog:

SHOW VARIABLES LIKE 'log_bin';

如果返回 ON,说明开启了。


1️⃣ 准备测试表与数据

-- 创建测试库
CREATE DATABASE test_recover;
USE test_recover;

-- 创建表
CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50),
  age INT
);

-- 插入一些测试数据
INSERT INTO users (name, age) VALUES
('Alice', 22),
('Bob', 25),
('Charlie', 30),
('David', 28),
('Eva', 35);

-- 查看数据
SELECT * FROM users;

📌 此时 users 表里有 5 条数据。


2️⃣ 模拟误删操作

-- 手抖误删了 Bob
DELETE FROM users WHERE name = 'Bob';

-- 查看数据
SELECT * FROM users;

👉 Bob 已经不见了。


3️⃣ 假设我们已经提交(无法直接 rollback)

我们要从 binlog 中恢复。


4️⃣ 找到对应的 binlog 文件

执行:

SHOW BINARY LOGS;

会显示类似:

+-------------------+-----------+
| Log_name          | File_size |
+-------------------+-----------+
| mysql-bin.000001  |  154      |
| mysql-bin.000002  |  234      |
+-------------------+-----------+

记录了执行过的所有 SQL。


5️⃣ 查看 binlog 内容

使用 mysqlbinlog 工具(在 MySQL 安装目录里)。
例如:

mysqlbinlog --no-defaults --start-datetime="2025-08-18 00:00:00" \
--stop-datetime="2025-08-18 23:59:59" \
/var/lib/mysql/mysql-bin.000002 > binlog.sql

📌 参数说明:

  • --start-datetime 和 --stop-datetime:指定要恢复的时间范围(避免全量恢复,减少风险)

  • /var/lib/mysql/mysql-bin.000002:binlog 文件路径

  • > binlog.sql:导出到一个 SQL 文件


6️⃣ 找到误删的 SQL

打开 binlog.sql,你会看到类似:

### DELETE FROM `test_recover`.`users`
### WHERE
###   @1=2 /* INT meta=0 nullable=0 is_null=0 */
###   @2='Bob' /* VARSTRING(50) meta=50 nullable=1 is_null=0 */
###   @3=25 /* INT meta=0 nullable=1 is_null=0 */

说明我们删掉了 id=2, name='Bob', age=25 这一行。


7️⃣ 恢复数据

有两种方式:

✅ 方式一:手动 INSERT

INSERT INTO users (id, name, age) VALUES (2, 'Bob', 25);

✅ 方式二:直接回放 binlog 到误删前

如果你要恢复整个库到某个时间点,可以执行:

mysqlbinlog --no-defaults --start-datetime="2025-08-18 00:00:00" \
--stop-datetime="2025-08-18 15:30:00" \
/var/lib/mysql/mysql-bin.000002 | mysql -u root -p

📌 这样会把误删前的 SQL 全部执行,恢复到某个时间点。


8️⃣ 验证数据恢复

SELECT * FROM users;

👉 Bob 已经回来了。


✅ 总结

  1. DELETE 误删 → 可用 binlog 恢复

  2. 流程:误删 → 找 binlog → 导出 SQL → 定位误删 → 回放或手动恢复

  3. 前提:必须提前开启 binlog + 定期备份

删库很危险,跑路要尽快🤪🤪🤪

MySQL数据恢复实战:基于Binlog的误删数据逆向操作指南 本文提供了一份基于MySQL Binlog的误删数据恢复实战指南。文章详细阐述了利用Binlog进行数据恢复的两大核心方案:追根溯源法和逆向工程法,并重点介绍了在ROW日志模式下,如何通过解析DELETE记录直接生成逆向INSERT语句来高效恢复数据。同时强调了恢复前的三大前提检查和使用binlog2sql等自动化工具的最佳实践,帮助DBA和开发者在紧急情况下从容应对数据丢失危机。 阅读详情

相关推荐

高通camera open代码流程(hal到kernel)

内容:简单介绍Camera open代码调用流程,从HAl到kernel。(api1+hal1) 前言 Android camera api和hal对应关系。安卓在版本更新过程中,camera相关代码也经历了几个版本的更新,表现为camera HAL版本更新(HAL1->HAL2->HAL3),camera API版本更新(camera API1->camera API2),接下...

oxoo123的专栏 4276

生产数据恢复系列之使用binlog恢复truncate误删数据

MySQL误删数据不跑路

huanhuanzhou blog 2439

VS2022+Qt6保姆级配置指南:从插件安装到项目互通全流程(附常见错误解决)

本文提供了一份详细的Visual Studio 2022与Qt6集成开发环境配置指南。从插件安装、环境搭建到项目创建与互通,涵盖了全流程操作步骤,并针对常见的配置错误和调试问题提供了实用的解决方案,帮助开发者高效构建企业级桌面应用。

nginx7reverse的博客 1207

找出谁删除了某个表

找出谁删除了某个表当实例没有做DDL Trigger和其它一些监控时,如何知道谁删除了某个表?通过系统函数fn_dblog,fn_dump_dblog和默认跟踪可以找到。1. 创建测试环境:新建个表,插入一条数据,然后drop掉CREATEDATABASEtestgoUSEtestgoCREATETABLEdbo.fnlog_test(idINTIDENTITY,valVARCH...

weixin_30603633的博客 348

深入解析FPGA中的GTX高速收发器架构与设计原理

本文深入解析了FPGA中GTX高速收发器的核心架构与设计原理。文章将GTX比作数据“高速公路”,详细拆解了其PMA(物理媒介适配层)与PCS(物理编码子层)的双层结构,阐述了串并转换、时钟恢复等关键技术,并提供了时钟源选型(QPLL/CPLL)、上电复位流程及信号完整性调试等实战指南,是掌握高速接口设计的必备知识。

f6g7h8i9j的博客 219

RK3566/RK3568 Android 11添加系统服务

【代码】RK3566/RK3568 Android 11添加系统服务。

qq_23921815的博客 641

mysql通过mysql-bin文件恢复数据

mysql-bin00xxx文件(/var/lib/mysql/mysql-bin00xxx)是数据库的操作日志文件,一定情况下可以利用操作日志文件来恢复数据, 例如一个表中之前插入了1条数据,之后给误删除了,这时可以在操作日志文件找到之前插入的数据, 以此来恢复数据。 my.cnf配置相关 1.开启日志保存机制  log-bin=mysql-bin 2.保留的日志的天数   e

chongcilingjian的专栏 5109

汽车UDS诊断之诊断会话控制服务(0x10)深度剖析

DiagnosticSessionControl就是诊断会话控制。 请求消息定义 A_Data类型 参数名称 Cvt 字节值 助记符 #1 诊断会话控制请求SID M 0x10 DSC #2 子功能=[诊断会话类型] M 0x00-0xFF LEV_DS_ ...

心骗小白话的博客 7419

mysql8只有ibd文件的情况下恢复数据

ps:ibd2sdi是mysql8及以上自带工具 4.在2新建的数据库中执行3中等到的test.sql文件 ps:test.sql文件包含两部分,建表语句+将InnoDB表的表空间移除ps:al.sql文件用来重新加载表空间

聋的传人 707

多跳问答技术解析:从原理到金融领域实践

多跳问答(Multi-hop QA)是自然语言处理中的高级任务,要求系统通过多步推理整合分散信息来回答问题。其核心技术在于理解文档间的复杂关联,相比单跳问答需要更精细的数据集设计和模型架构。在金融、医疗等专业领域,多跳问答能有效处理如'腾讯大股东投资的港股上市公司'这类需要串联多个信息点的问题。典型实现方案包括MR-Search框架的三级检索器设计,分别处理实体召回、关系匹配和数值比较。当前最佳实践表明,结合稠密检索与稀疏检索的混合策略,配合动态路由机制,能在保持较高精度的同时控制计算成本。这类技术在金融风

weixin_42566072的博客 606

SA8155P QCOM 车载系统介绍

高通车载相机开发

qq_37057338的博客 5230

mysql数据库修复工具 innodb表数据恢复 ibd文件恢复工具

极佳Mysql数据库修复程序是由极佳数据库修复中心独立研发。主要针对Mysql数据库损坏的恢复。本程序可用于因为各种误操作而导致数据丢失的恢复,以及因为断电、陈列损坏、硬盘坏道 病毒攻击等各种原因导致数据库极限数据恢复。软件主要针对Innodb引擎数据库的修复......

u014513153的博客 3040

零基础DSP实战TMS320F28035:第九节,ADC比较器&EPWM

ADC比较器框图如下所示:-电压-----------------------------输出-电压A>电压B------------------ 1-电压A

sinat_30943509的博客 2535

MySQL误删除 binlog 还原 恢复已删除数据 实战 超详细

MySQL 通过 binlog 恢复已删除数据 超详细

id_is_null的博客 5612

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MYSQL之 Binlog恢复误删数据库详解

MySQL一旦误删数据库之后恢复数据很麻烦,这里记录一下艰辛的恢复过程,这篇文章主要给大家介绍了关于如何利用MySQL的binlog恢复误删数据库的相关资料。

Linux运维老纪的博客 1389

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

mysql误删后使用binlog恢复数据

(这里我们是要测试binlog恢复数据的使用,所以就日志文件都放到一个全新binlog文件中方便查询使用,如果是实际恢复数据的话,就要一个一个的在这些binlog文件中找自己要的那部分文件了。数据恢复:通过恢复误删操作之后的操作记录,可以将误删的数据重新插入到数据库中,还原到误删之前的状态。这将重新执行误删操作之后的操作,从而还原到误删前的数据状态。假设我们的数据库是7天一备份,然后binlog的过期时间是大于7天的,那么通过备份的数据库+binlog文件就能够恢复数据库到达7天内的任意一个时间点的状态。

m0_70208894的博客 2674

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

MySQL使用mysqldump+binlog完整恢复被删除的数据库

(一)概述 在日常MySQL数据库运维过程中,可能会遇到用户误删除数据,常见的误删除数据操作有: 用户执行delete,因为条件不对,删除了不应该删除的数据(DML操作); 用户执行update,因为条件不对,更新数据出错(DML操作); 用户误删除表drop table(DDL操作); 用户误清空表truncate(DDL操作); 用户删除数据库drop database,跑路(DD...

weixin_42299396的博客 1601

如何使用binlog2sql快速恢复误删除的数据库数据

在数据库管理工作中,误删除数据是一个常见且令人头疼的问题。幸运的是,binlog2sql工具提供了一种简单高效的解决方案,能够帮助我们快速从MySQL binlog中解析出回滚SQL,实现数据的快速恢复。本文将详细介绍如何使用binlog2sql工具来应对误删除数据的紧急情况。 ## 一、binlog2sql工具简介 binlog2sql是一款纯Python开发的MySQL binlog解析工

gitblog_00282的博客 780

如何快速恢复误删数据?掌握binlog2sql,MySQL数据恢复的终极解决方案

在数据库管理中,误删或误更新数据是常见的紧急情况,传统恢复方法往往耗时且影响业务运行。**binlog2sql**作为一款强大的MySQL数据恢复工具,能够直接解析binlog日志并生成回滚SQL,帮助开发者和DBA在几分钟内完成数据恢复,避免因数据丢失导致的业务中断。本文将详细介绍binlog2sql的核心功能、安装步骤、实战案例及使用技巧,让你轻松掌握这一必备技能。 ## 为什么选择binl

gitblog_00100的博客 951

MySQL日志之误删恢复数据

比如说,数据是在9月12日12:00插入的,那么我们看上方的所有binlog文件,可以看出插入语句应该保存在mysql-bin.000213文件中。比如说,数据是在9月12日12:00删除的,那么我们看上方的所有binlog文件,可以看出插入语句应该保存在mysql-bin.000213文件中。因为这些参数是用于解码binlog的,是让开发人员更方便看到binlog被解析之后的格式。目前有一些开源的工具,可以帮助我们解析binlog,并且自动生成binlog记录的操作的逆向操作。被误删的数据,如何恢复呢。

上善若泪 3178

MySQL如何恢复误删的数据?

常在河边走,哪有不湿鞋。

ABCisCOOL的博客 1万+

MySQL数据恢复实战:从binlog解析到误删恢复全流程

本文详细介绍了MySQL数据库误删数据后的完整恢复流程。核心在于利用binlog(二进制日志)进行数据追溯与恢复,重点讲解了ROW模式的重要性、两种实战恢复方案(追溯插入与逆转删除),并推荐了自动化工具binlog2sql的使用,帮助开发者和DBA在紧急情况下高效、准确地恢复数据。

red88的博客 870

binlog2sql恢复mysql数据

1.查看数据库是否开启binlog show variables like '%log_bin%'; 状态是ON说明已经开启 开启binlog配置可以参考https://blog.csdn.net/letterss/article/details/89491552里面的my.cnf配置。 查询当前binlog文件 show master status; 可以看到当前的binlo...

letterss的博客 8100

【删库跑路】使用Binlog日志恢复误删的MySQL数据

前言 “删库跑路”是程序员经常谈起的话题,今天,我就要教大家如何删!库!跑!路! 开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文,你能够了解到: MySQL的binlog日志是什么?通常是用来干什么的? 模拟一次误删数据的操作,并且使用binlog日志恢复误删的数据。 写这篇文章的初衷,是有一次我真的险些把测试数据库的一张表给删除了,当时吓...

LouisLee 的博客 1730
上一篇: sql操作删除掉的数据如何恢复 SQL删除数据方式对比及恢复指南:DELETE可搭配WHERE和事务回滚恢复;
下一篇: JS 对象属性检测方法对比表,包含 in、hasOwnProperty、Object.hasOwn、Reflect.has 的区别、使用场景和推荐做法
星空下的DeppBing
博客等级 码龄7年 552粉丝 260原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星空下的DeppBing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值