MySQL数据库误删回滚的解决

 更新时间:2022年06月30日 15:08:21   作者:半路马龙  
本文主要介绍了MySQL数据库误删回滚的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

某次一不小心,用了delete from xxx 删除了几条重要数据,在网上找了很多方法,但都比较零散,打算记录本次数据找回的过程。
大致分为以下几步

1、查看binlog是否开启

# log_bin是ON,就说明打开了 OFF就是关闭状态,以下操作,只有为 ON 时有效。
show variables like 'log_bin';

2、找到binlog文件名

show master logs;

运行以上代码,如下图 TS1-bin.000009 就是我们要找的文件名

3、查看binlog日志位置

show variables like '%datadir%';

4、根据上面得到的位置,去找到 TS1-bin.000009 文件

5、进入到mysql安装目录的bin目录下,执行以下命令根据误删除的时间范围从TS1-bin.000009文件导出成sql文件

mysqlbinlog --base64-output=decode-rows -v --database=数据库名 --start-datetime="2022-06-29 15:35:00" --stop-datetime="2022-06-29 15:45:00" C:/Users/Administrator/Desktop/TS1-bin.000009 > C:/Users/Administrator/Desktop/mysqllog.sql

这里我把 TS1-bin.000009 文件拷贝到了桌面,因为该文件原始存放路径有空格,导致命令执行失败,无法找到路径。
得到 mysqllog.sql 文件后,可以用记事本打开,搜索 DELETE 关键字,找到删除数据的记录

6、将 DELETE 语句改造成 INSERT 语句,在windows下用vbs来实现,把下面代码复制保存为:deleteToinsert.vbs 文件(一定要是.vbs格式文件) 与mysqllog.sql在同一目录下,然后双击运行,会生成mysqllogOK.sql文件就是我们要的INSERT语句

'========================== 
'用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
oldStream.LoadFromFile("mysqllog.sql") 'binLog生成的DELETE原日志文件
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

7、拿到对应的 INSERT 语句后执行。

参考文章

https://blog.csdn.net/qq_36602951/article/details/120729047
https://juejin.cn/post/7028955574242902023

到此这篇关于MySQL数据库误删回滚的解决的文章就介绍到这了,更多相关MySQL数据库误删回滚内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql 中文乱码 解决方法集锦

    mysql 中文乱码 解决方法集锦

    主要是针对 1.4x版本的一些乱码问题,其实新版本中错误也差不多,大家注意下编码问题。
    2009-06-06
  • 安装MySQl报Initializing database (may take a long time)错误解决办法

    安装MySQl报Initializing database (may take a long time)错误

    这篇文章主要给大家介绍了关于安装MySQl报Initializing database (may take a long time)错误的解决办法,文中通过图文将解决的办法介绍的非常详细,对大家学习或者使用mysql具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-03-03
  • Mysql  DATEDIFF函数用法总结示例详解

    Mysql  DATEDIFF函数用法总结示例详解

    MySQL DATEDIFF()函数是MySQL中常见的日期函数之一,它主要用于计算两个日期之间的差值,单位可以是天、周、月、季度和年,DATEDIFF函数用于返回两个日期的天数,这篇文章主要介绍了Mysql  DATEDIFF函数,包括语法格式和示例代码讲解,需要的朋友可以参考下
    2023-03-03
  • MySQL利用frm文件和ibd文件恢复表结构和表数据

    MySQL利用frm文件和ibd文件恢复表结构和表数据

    当MySQL数据库遭遇崩溃或数据丢失时,利用备份的 .frm 和 .ibd 文件恢复数据是一种有效的解决方案,.frm 文件包含表的结构信息,而 .ibd 文件则存储表的实际数据,本文将提供一个详细的步骤指南,演示如何利用这些文件恢复MySQL表数据和表结构,需要的朋友可以参考下
    2024-05-05
  • MySQL查询语法汇总

    MySQL查询语法汇总

    这篇文章主要介绍了MySQL查询语法的汇总,帮助大家更好的理解和学习mysql,感兴趣的朋友可以了解下
    2020-08-08
  • Mysql中 IFNULL函数的使用详解

    Mysql中 IFNULL函数的使用详解

    IFNULL()函数在MySQL中用来检查第一个表达式是否为NULL,非NULL则返回第一个值,否则返回第二个值,本文就来详细的介绍一下如何使用,感兴趣的可以了解一下
    2024-09-09
  • 分析MySQL中优化distinct的技巧

    分析MySQL中优化distinct的技巧

    这篇文章主要介绍了分析MySQL中优化distinct的技巧,主要是通过减少本地扫描的次数来进行优化的方法,需要的朋友可以参考下
    2015-05-05
  • Windows下mysql 8.0.12 安装详细教程

    Windows下mysql 8.0.12 安装详细教程

    这篇文章主要为大家详细介绍了Windows下mysql 8.0.12 安装详细教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • Navicat连接服务器MySQL数据库步骤及遇到错误和问题

    Navicat连接服务器MySQL数据库步骤及遇到错误和问题

    Navicat是一款强大的数据库管理工具,可以用来远程连接MySQL服务器,下面这篇文章主要给大家介绍了关于Navicat连接服务器MySQL数据库步骤及遇到错误和问题的相关资料,文中通过代码及图文介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • 查看MySQL初始密码并修改的正确方式

    查看MySQL初始密码并修改的正确方式

    这篇文章主要给大家介绍了关于查看MySQL初始密码并修改的正确方式,MySQL是一款广泛使用的开源关系型数据库管理系统,安装后找回初始密码是MySQL使用中的一个基础问题,需要的朋友可以参考下
    2023-10-10

最新评论