转载:https://www.cnblogs.com/q149072205/p/11940591.html

本机用的Navicat连mysql测试DB又连了正式DB,因为本地与正式要频繁操作所以都打开了很多查询,本来要DELETE删除测试DB的数据,没看清在正式环境执行了。共删除了325条数据,然后在网上找恢复数据的办法,一定要是DELETE删除的,如果用的是drop table删除表是没办法恢复的,具体恢复流程如下

第一步:先查看binlog功能是否开启

show variables like '%log_bin%';

如果为log_bin为ON说明可以恢复,如果为OFF说明没有开启binlog,也没有预先生成回滚SQL,那可能真的无法快速回滚了,GAMEOVER,下面的不用看了(好像可以通过ibd恢复,具体可以参考 https://blog.csdn.net/hanjun0612/article/details/102466509 )。

  第二步:查看数据文件存方路径

show variables like '%datadir%';

打开数据库所在路径查看有mysql-bin.****这样的文件,注意DELETE删除的时间,对比mysql-bin文件的修改时间,我的是26号下午18点左右进行的删除数据,所以找mysql-bin.000028这个文件

  第三步:找到mysql安装目录

show variables like "%basedir%";

CMD命令符进行Mysql安装目录下,找到mysqlbinlog.exe,如果没有说明你安装的是假mysql.

  第四步.通过mysqlbinlog 恢复删除的数据日志记录

mysqlbinlog --base64-output=decode-rows -v --database=DBName --start-datetime="2019-11-26 18:00:00" --stop-datetime="2019-11-26 18:10:00" D:\MySQL\Data\mysql-bin_copy.000028 > mysqllog.sql
mysqlbinlog 命令的参数说明
--base64-output=decode-rows //数据转换正常的字符,如果不设置这个参数将显示base64的数据
--database=DBName //数据库名(一个mysql数据库比较多,指定方便恢复)
--start-datetime="2019-11-26 18:00:00" //恢复起始时间
--stop-datetime="2019-11-26 18:10:00" //恢复结束时间
D:\MySQL\Data\mysql-bin_copy.000028 //为数据恢复的日志文件
mysqllog.sql //恢复以后我们需要的文件名

执行以后如下图:

打开mysqllog.sql文件,搜索 DELETE 关键字,找到被删除数据,看到这些数据以后总算放心了,如下图:

 第五步:把mysqllog的DELETE转换为Insert语句,这个在liunx下操作方便(有人用python转换也可以),把文件mysqllog.sql复制Liunx下

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

转换以后打开mysqllogOK.sql文件,因为批量替换前面多个一个分号,去掉以后,把所有生成的Insert语句在navicat下执行即可恢复所有DELETE删除的数据。

总结:   

1.不要随便用DELETE,数据做用字段做删除标记,不用使用DELETE删除数据,如果非要删除,删除前一定先备份一下数据

2.数据库做好定时备份,如果数据库不大,可以一小时备份一次,再大也可以每天备份一次

3.做事细心,越熟练的事越要细心,本次DELETE导致的加班,就是以为自己对sql熟练就随意操作。

4.也是最重要的一点,一定要Mysql开启binlog功能

如果没开启binlog功能的赶紧开启一下吧,mysql开启binLog功能方法(windows),打开my.ini文件,添加如下配置,重启mysql即可开启

# log-bin
log-bin=mysql-bin
binlog_format = ROW

window下Mysql 恢复Delete删除的数据的更多相关文章

  1. 一句DELETE引发的加班(Mysql 恢复Delete删除的数据)

    本机用的Navicat连mysql测试DB又连了正式DB,因为本地与正式要频繁操作所以都打开了很多查询,本来要DELETE删除测试DB的数据,没看清在正式环境执行了.共删除了325条数据,然后在网上找 ...

  2. window 下如何恢复被删除的mysql root账户及密码(mysql 8.0.17)

    不久前自学完完sql,下了mysql8.0.17,安装配置好后探索着,想着用root账户登上去能不能删除root账户呢,然后就想给自己一巴掌,,, 如何快速恢复root: 1.关闭mysql服务:wi ...

  3. 恢复delete删除的数据

    SELECT * FROM tablename AS OF TIMESTAMP TO_TIMESTAMP('2010-12-15 11:10:17', 'YYYY-MM-DD HH:MI:SS')

  4. MYSQL中delete删除多表数据

    MYSQL中delete删除多表数据 DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释: 1. delete from t1 where 条件 2.delete t1 ...

  5. mysql 清空或删除表数据后,控制表自增列值的方法

    http://blog.sina.com.cn/s/blog_68431a3b0100y04v.html 方法1: truncate table 你的表名 //这样不但将数据全部删除,而且重新定位自增 ...

  6. window下mysql创建库只读

    window下mysql创建库只读和启动失败都有可能是my.ini配置文件出错的问题 遇到如下错误ERROR 1036 (HY000): Table 'schemata' is read only,办 ...

  7. Window下mysql环境配置问题整理

    Window下mysql环境配置问题整理 参考如下链接. 无需安装解压版mysql包 创建选项配置 首次启动服务 用mysqld初始化目录 安装后设置和测试 启动服务错误信息 管理员模式打开cmd m ...

  8. Window下MySql 5.6 安装后内存占用很高的问题

    Window下MySql 5.6 安装后内存占用很高的问题 刚刚准备玩一把mysql,初学者 环境是window 7和window sever 2008, mysql是最新的5.6, 发现的问题是安装 ...

  9. ubuntu 下 mysql数据库的搭建 及 数据迁移

    1.mysql的安装 我是使用apt-get直接安装的 :sudo apt-get install mysql-server sudo apt-get install mysql-client 2.配 ...

随机推荐

  1. find 文件查找

    目录 find文件查找 1.为什么要使用文件查找 2.根据文件名称查找-name 3.根据文件大小查找-size 4.根据文件类型查找-type f 5.根据文件时间查找-mtime 6.根据文件用户 ...

  2. CentOS 6.5安装aria2(转载)

    CentOS 6.5安装aria2 由于yum install aria2无法找到安装包,试了好几个源,都找不到,于是自己找了一些地址: 1.下载安装包: # wget http://ftp.tu-c ...

  3. 图形设计 X11

    显示适配器驱动程序安装范例 AMD驱动加载 Intel驱动加载

  4. react 获取token

    1.在action  中发送请求,j将获取得到的token  储存起来 到localhost //登陆发送请求 export const loginUser = (userData,history)= ...

  5. Spring、SpringMVC、SpringBoot、SpringCloud概述

    spring和springMvc: 1. spring是一个一站式的轻量级的java开发框架,核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(springMvc).业务层(Ioc) ...

  6. java模式-----单例模式

    什么是单例设计模式? 单例模式,是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例.即一个类只有一个对象实例. 类结构 ...

  7. 部署.net Core 到 Windows server 2008 r2 IIs

    1. 将项目发布 2.iis 新建网站,设置 3 安装windows  server  hosting 4 关于报错 1.下载sdk https://www.microsoft.com/net/lea ...

  8. vue-cli创建的项目中引入第三方库报错'caller', 'calle', and 'arguments' properties may not be...

    本文链接:https://blog.csdn.net/Sophie_U/article/details/76223978 问题: 在vue的main.js中引入mui.min.js时,报错. 如上,单 ...

  9. 微信jssdk安卓机分享QQ好友和QQ空间出现{"errMsg":"shareQQ:fail"}

    使用ajax请求appid之类的配置,然后进行wx.config和wx.ready,苹果机上是完全OK的,但是安卓机上十次有九次是失败,只有一次能成功,百度了一下,有人说是参数有空格,有人说是微信bu ...

  10. Spring 容器中bean的加载过程

    bean 的加载过程大致可以分为以下几个步骤: 1.获取配置的资源文件 2.对获取到的xml资源文件进行解析 3.获取包装资源 4.解析处理包装之后的资源 5.加载 提取bean 并进行注册(添加到b ...