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数据找回相关推荐
- 恢复oracle中误删除delete的数据、drop掉的表
oracle误删除数据的恢复方法 学习数据库时,我们只是以学习的态度,考虑如何使用数据库命令语句,并未想过工作中,如果误操作一下,都可能导致无可挽回的损失.当我在工作中真正遇到这些问题时,我开始寻找答 ...
- oracle如何根据ID恢复部分数据,三种方法找回Oracle数据库误删除的数据
三种方法找回Oracle数据库误删除的数据 最新动态来源:点击数:6141更新时间:2018/5/10 有很多朋友都遇到过在操作数据库时误删除某些重要数据的情况,如果数据库没有备份而且数据有十分重要的 ...
- Mysql定义DELETE操作触发器,将删除数据存入历史表
Mysql定义DELETE操作触发器,将删除数据存入历史表 SQL如下: // An highlighted blockDELIMITER $$ CREATE TRIGGER <触发器名称> ...
- 误删除文件怎么找回 数据恢复用这些方法
误删除文件是很多人都会遇到的问题,尤其是在Windows 10系统中,有时候我们不小心按了Shift+Delete或者清空了回收站,就会导致文件永久消失.那么,误删除文件怎么找回呢?本文将介绍四种数据 ...
- mysql 恢复delete操作_MySQL 误操作后数据恢复(update,delete忘加where条件)
在数据库日常维护中,开发人员是最让人头痛的,很多时候都会由于SQL语句写的有问题导致服务器出问题,导致资源耗尽.最危险的操作就是在做DML操作的时候忘加where条件,导致全表更新,这是作为运维或者D ...
- MySQL之误删数据如何处理
写在前面 在工作中不管是程序bug,运维的失误,等,都有可能导致数据误删除,或者是误操作,此时我们就必须快速的恢复数据,避免对正常业务造成过大的影响,甚至出现事故,本文我们按照如下的几种情况来进行分析 ...
- Oracle中误删数据找回方法
快一个月没写东西了,最近确实有点忙.偶尔一次加班头有点晕居然被我误删了数据,还好只是测试数据,但是也要恢复啊,不然之前的测试不就白费了吗,哈哈.然后就去找了一些相关的恢复误操作的方法,在下面记录下来, ...
- SQLServer数据库误删数据找回
记一次SQLServer数据库误删数据找回 昨天 同事在本机清理数据库表时,连接到了生产机,误删了二十几张表,幸好是晚上加班的时候删除的,生产机上当时是一天一备份,还原备份是最后的策略,最关键的还是要 ...
- MySQL 删除表数据,重置自增 id 为 0 的两个方式
MySQL 删除表数据,重置自增 id 为 0 的两个方式: 1.truncate table table_name; truncate table `user`; 2.delete 配合 alter ...
最新文章
- Several ports (8005, 8080, 8009) required by Tomcat v5.5 Server at localhost are already in use.....
- 倾情大奉送--Spark入门实战系列
- 一本通1655数三角形
- Android Wear开发者预览版入门
- Android4.0 Launcher 源码分析系列(二)
- mailto 附带附件_我和我的朋友如何将附带项目发展为每月$ 17,000的业务
- 开机预读快还是不预读快_WIN 7下的超级预读比VISTA要好,改进不少!推荐开启超级预读!...
- linux运维高频命令汇总
- SQL Server 当表分区遇上唯一约束(转载)
- AI学习笔记(十四)CNN之图像分割
- Java编程经典10道_10道经典java编程笔试题
- 博文视点大讲堂第20期——Windows 7来了
- Java SimpleDateFormat格式化时间不准确
- Win7下安装Flash低版本
- SpringBoot实现JWT保护前后端分离RESTful API
- 传统城域网架构遇瓶颈 引入NFV成有效解法
- PHP - Redis实现入队出队
- 获取全年所有非工作日和工作日的脚本(Python篇)
- 信息安全技术 实验3 木马及远程控制技术
- Android Jetpack组件 DataStore的使用和简单封装