Mysql误删除DELETE数据找回操作指南

 更新时间:2023年05月18日 15:09:56   作者:千硕  
如果我们在数据库中不小心执行了类似"delete from t1"这样的不带where条件的语句,那么整张表的数据就全被删除了,下面这篇文章主要给大家介绍了关于Mysql误删除DELETE数据找回操作的相关资料,需要的朋友可以参考下

1.查看binlog是否开启

show variables like '%log_bin%';

2.查看数据文件存放路径:bin-log路径

show variables like '%datadir%';

3.找到删除时间段的binlog,翻译为sql

mysqlbinlog --base64-output=decode-rows -v --database=数据库名 --start-datetime="2022-10-19 16:40:00" --stop-datetime="2022-10-19 16:450:00" "D:\Program Files\mysql-5.7.30-winx64\mysqldb\bin.000041" > d:\mysqllog.sql

4.在生成的 mysqllog.sql 文件同路径下 ,生成将delete翻译为insert的sql文件

linux:

cat mysqllog.sql | sed -n '/###/p' | sed 's/### //g;s//*./,/g;s/DELETE FROM/;INSERT INTO/g;s/WHERE/SELECT/g;' |sed -r 's/(@17.),/\1;/g' | sed 's/@1=//g'| sed 's/@[1-9]=/,/g' | sed 's/@[1-9][0-9]=/,/g' > mysqllogOK.sql

5、windows:

在生成的sql文件同目录下,创建.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
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

6、把mysqllog.sql文件和生成的windows中的.vbs放在同一个文件夹中双击执行生成mysqllogOK.sql文件

7、进入mysqllogOK.sql文件删除其中的delete保留insert再去执行mysqllogOK.sql就成功了

8、如果binlog日志没有开启可以进行开启

linux:

cd /usr/etc/vim my.cnf

log-bin=mysql-bin # 开启Binlog 一般只需要修改这一行即可
binlog-format=ROW # 设置格式 此行可以不加 命令设置即可 详见下方拓展
server_id=1 # 配置serverID 这一行本来就存在
systemctl restart mysqld #重启mysql

总结

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

相关文章

  • 数据库面试必备之MySQL中的乐观锁与悲观锁

    数据库面试必备之MySQL中的乐观锁与悲观锁

    这篇文章主要介绍了数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数据一致性要求极高的场景,通过加锁确保数据一致,需要的朋友可以参考下
    2025-04-04
  • mySQL中replace的用法

    mySQL中replace的用法

    MySQL replace函数我们经常用到,下面就为您详细介绍MySQL replace函数的用法,希望对您学习MySQL replace函数方面能有所启迪
    2012-09-09
  • mysql exists与not exists实例详解

    mysql exists与not exists实例详解

    这篇文章主要介绍了mysql exists与not exists实例详解的相关资料,鉴于 not exists 的效率往往要高于 not in , 所以一般情况下会使用前者替代后者,需要的朋友可以参考下
    2017-07-07
  • MySQL中的ALTER EVENT语句的具体使用

    MySQL中的ALTER EVENT语句的具体使用

    EVENT 是一种特殊的数据库对象,它允许你在指定的时间间隔或特定的时间自动执行SQL语句或语句集,本文主要介绍了MySQL中的ALTER EVENT语句的具体使用,感兴趣的可以了解一下
    2024-07-07
  • 原来MySQL 数据类型也可以优化

    原来MySQL 数据类型也可以优化

    这篇文章主要介绍了原来MySQL 数据类型也可以优化,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-08-08
  • MySQL数据库如何正确设置主键

    MySQL数据库如何正确设置主键

    主键是用于唯一标识数据库表中每一行数据的一列或一组列,主键可以确保数据的唯一性和完整性,这篇文章主要给大家介绍了关于MySQL数据库如何正确设置主键的相关资料,需要的朋友可以参考下
    2024-04-04
  • 快速解决MySQL服务无法启动显示:系统出错,发生系统错误1067, 进程意外终止的两种方法

    快速解决MySQL服务无法启动显示:系统出错,发生系统错误1067, 进程意外终止的两种方法

    本人因为phpstudy的MySQL数据库与我的电脑上的MySQL数据库发生冲突,当我将MySQL服务器的服务名从MySQL改为MySQL5后,启动MySQL5服务后就报错:系统出错, 发生系统错误 1067, 进程意外终止,现在将这个解决方法分享给大家,需要的朋友可以参考下
    2024-06-06
  • MySQL笔记之修改数据的解决方法

    MySQL笔记之修改数据的解决方法

    本篇文章介绍了,在mysql中修改数据的解决方法。需要的朋友参考下
    2013-05-05
  • MySQL 中的 SQL_MODE 设置方法ANSI_QUOTES 选项解析与应用小结

    MySQL 中的 SQL_MODE 设置方法ANSI_QUOTES 选项解析与应用小结

    sql_mode是 MySQL 中的一个系统变量,用于控制 SQL 语句的解析和执行方式,它由多个选项组成,每个选项都可以独立设置,以满足不同的应用场景需求,这篇文章主要介绍了MySQL 中的 SQL_MODE 设置:ANSI_QUOTES 选项解析与应用
    2024-12-12
  • Ubuntu 18.04配置mysql以及配置远程连接的步骤

    Ubuntu 18.04配置mysql以及配置远程连接的步骤

    这篇文章主要给大家介绍了关于Ubuntu 18.04配置mysql以及配置远程连接的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07

最新评论