MySQL 恢复误删数据

news/2024/11/16 2:21:42/

文章目录

          • 1、查看是否启用 binlog 日志
          • 2、查看所有 binlog 日志
          • 3、查看正在使用的日志
          • 4、查找日志所在文件夹
          • 5、log 日志转 sql
          • 6、delete 转 insert 恢复误删

MySQL 恢复误删数据,针对 window 和 Linux 均适用,只需要找到对应的 binlog 目录文件,默认就是 MySQL 安装目录下的 data 文件夹

一般误删数据,先停止所有操作,备份数据库

# 备份所有数据库
mysqldump -uroot -p123456 --all-databases > /backup/mysqldump/all.db
# 恢复数据
mysql -uroot -p db_name < /backup/mysqldump/db_name.db
1、查看是否启用 binlog 日志
SHOW VARIABLES LIKE '%log_bin%'

在这里插入图片描述

2、查看所有 binlog 日志
SHOW BINARY LOGS;

在这里插入图片描述

3、查看正在使用的日志
SHOW MASTER STATUS;

在这里插入图片描述

4、查找日志所在文件夹
SHOW VARIABLES LIKE '%datadir%';

在这里插入图片描述

5、log 日志转 sql

使用上面使用的 binlog.000056 文件,先把 该文件复制到其他地方

mysqlbinlog E:\test\result\binlog.000056 > E:\test\result\db.sql

有可能报错
在这里插入图片描述
添加 --no-defaults 参数可以解决,但中文会乱码(使用下面 vbs 或自定义语言实现可解决 乱码问题),一般要加上时间字段转换 sql

mysqlbinlog --no-defaults --base64-output=decode-rows -v --database=oauth --start-datetime="2023-06-01 01:44:00" --stop-datetime="2023-06-01 01:48:00" F:\mysql-8.0.29-winx64\data\binlog.000058 > E:\test\result\db.sql

转换成功如下,可以看到删除 sql 的语句
在这里插入图片描述
接下来只需要将上面的 delete 语句转换为 inert 即可恢复误删数据,如果需要转换的多可以通过代码自定义实现,主要就是将
delete 转 insert

6、delete 转 insert 恢复误删

通过 vbs 脚本转换 sql 语句,当然也可以使用其他的语言,window 执行 vbs 不需要额外的环境,你只需要修改下面 vbs 文件中输入输出文件名以及编码类型即可

'==========================
'用VBS实现 MYSQL binglog DELETE 转 INSERT
'==========================
function replaceregex(patern,str,tagstr)
dim regex,matches
set regex=new regExp
regex.pattern=patern
regex.IgnoreCase=true
regex.global=true
matches=regex.replace(str,tagstr)
replaceregex=matches
end function'Mysql binlog DELETE转INSERT==========
'VBS打开文本文件
Set oldStream = CreateObject("ADODB.Stream")
oldStream.CharSet = "utf-8"
oldStream.Open
'binLog 生成的 DELETE 原日志文件'
oldStream.LoadFromFile("E:\test\result\db.sql") 
oldText = oldStream.ReadText()
newText=replace(oldText,"### DELETE FROM", ";INSERT INTO")
newText=replace(newText,"### WHERE", "SELECT")
newText=replace(newText,"###", "")
newText=replace(newText,"@1=", "")
newText=replaceregex("@[1-9]=",newText, ",")
newText=replaceregex("@[1-9][0-9]=",newText, ",")
oldStream.Close
'VBS保存文件
Set newStream = CreateObject("ADODB.Stream")
newStream.Type = 2 'Specify stream type - we want To save text/string data.
newStream.Charset = "utf-8" 'Specify charset For the source text data.
newStream.Open 'Open the stream And write binary data To the object
newStream.WriteText newText
newStream.SaveToFile "mysqllogOK.sql", 2 'DELETE转成INSERT以后的新的SQL文件名
newStream.Close

转换结果如下,自行选择新增恢复数据

在这里插入图片描述


http://www.ppmy.cn/news/163466.html

相关文章

ts面试总结题

什么是TypeScript? TypeScript 是一门静态类型、弱类型的语言 TypeScript和JavaScript有什么不同? TypeScript 是 JavaScript 的超集&#xff0c;扩展了 JavaScript 的语法&#xff0c;因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改&#xff0c;TypeScrip…

Java程序设计入门教程--for语句

for语句 格式 for ( 表达式1&#xff1b;表达式2&#xff1b;表达式3 ) 循环体&#xff1b; for语句结构说明 表达式1&#xff1a;通常是初始化表达式&#xff0c;用来设定循环变量的初始值&#xff0c;也就是循环计数的起点&#xff1b; 表达式2&#xff1a;是判断表达式&am…

通过继承WebMvcConfigurationSupport配置静态资源映射不生效的问题

原始写法如下 Configuration Slf4j public class WebConf extends WebMvcConfigurationSupport {Value("${ees.static.path}")private String staticPath;Value("${ees.swagger.enable}")private Boolean swaggerEnable;Overrideprotected void addResour…

IBM Storwize V3700 无法打开 Web 管理页面的问题解决

IBM Storwize V3700 的存储中提供 Web 服务的是 tomcat &#xff0c;页面无法正常打开&#xff0c;有可能是 Web 服务宕掉了&#xff0c;所以只需要把这个服务重启一下就好了。 ssh 接入 V3700 &#xff0c;然后 satask restartservice -service tomcat

IBM v3700存储加光纤子卡

存储的两个控制器加完光纤子卡后&#xff0c;登录管理界面&#xff0c;新建FC主机的时候没有FC主机的选项&#xff0c;控制光纤模块没有红光出来。 解决方法&#xff1a;到监控 -> 事件里面&#xff0c;点击RUN FIX&#xff0c;根据提示下一步下一步即可&#xff08;控制器…

IBM V3700/V5000/V7000存储配置步骤

工具/原料 笔记本 网线 方法/步骤 1. 系统初始化&#xff08;新买的存储需要初始化&#xff09;&#xff0c;默认出厂A控和B控ip地址为 192.168.70.121/24和192.168.70.122/24&#xff0c;首先给笔记本配置192.168.70.99&#xff0c;然后拿一根网线把笔记本和存储连起来。 2.…

5800X + RTX3070 装机 AN混搭

目录 前言配置评测主板刷BIOS, 超频, XMP, 虚拟化启用装Win10冷启动掉盘CPU闲扯主板搭配显卡吐槽PCIe 4.0 SSDWiFi6微信公众号 前言 业余装机户今年动手装了不少台式机, 鉴于最近AN(AMDNvidia)混搭装机的小伙伴越来越多, 这里也记录下前不久的一次装机经历. 配置 类别型号厂…

V3700系列存储数据恢复成功过程

存储故障过程描述 本次数据恢复的设备为某品牌V3700系列存储&#xff0c;故障涉及的硬盘共10块4T的硬盘&#xff0c;查看客户所给的相关信息&#xff0c;了解到共有2组Mdisk&#xff0c;加入到一个存储池中&#xff0c;其中创建了一个通用卷来存放数据。据客户描述&#xff0c…