mysql 误删除数据恢复
1.首先确认误删除了那些表的数据以及什么时间执行的删除操作
2.根据上面的时间去mysql服务器下载二进制日志
3.把下载的二进制日志文件上传到本地数据库服务器上,执行如下命令分析
mysqlbinlog  --no-defaults -v -v --base64-output=DECODE-ROWS --start-datetime="2017-04-01 00:00:00"  --stop-datetime="2017-04-01 00:18:50" /home/mysqldata/mysql-bin.000561 >rmdata.txt
mysqlbinlog  --no-defaults -v -v --base64-output=DECODE-ROWS  /home/mysqldata/mysql-bin.000562 >rmdata.txt
--start-datetime 开始时间
--stop-datetime  结束时间
4.提取相应表的删除语句
sed -n '/DELETE FROM `xxx`.`table_name`/,/@15=/{p}' rmdata.txt  >tablename.txt
@15表中的最后一个字段
5.提取的delete语句转换成相应的insert语句
python recover.py tablename.txt 25 > tablename.sql
命令行中的25 表示 需要还原的表的字段有25个
recover.py 脚本内容如下(网上找的)
#!/bin/env python 
# -*- encoding: utf-8 -*- 
#------------------------------------------------------------------------------- 
# Name:        recover.py 
# Purpose:     通过Binlog恢复Delete误操作数据 
# Author:      
# Created:     
# update:     
# Copyright:  
# Licence:     
#------------------------------------------------------------------------------- 
def read_binlog(file,column_num): 
    f=open(file) 
    num = '@'+str(column_num) 
    while True: 
        lines = f.readline() 
        if lines.strip()[0:3] == '###': 
            lines=lines.split(' ',3) 
            if lines[1] == 'DELETE' and lines[2] =='FROM':           #该部分替换Delete为Insert 
                lines[1] = "INSERT" 
                lines[2] = 'INTO' 
                lines[-1] = lines[-1].strip() 
            if lines[1].strip() == 'WHERE': 
                lines[1] = 'VALUES (' 
            if  ''.join(lines).find('@') <> -1 and lines[3].split('=',1)[0] <> num:          #num为列数,要是小于最大的列数,后面均加, 
                lines[3] = lines[3].split('=',1)[-1].strip() 
                if lines[3].strip('\'').strip().find('\'') <> -1: 
                    lines[3] = lines[3].split('/*')[0].strip('\'').strip().strip('\'').replace('\\','').replace('\'','\\\'')  #这里过滤掉转义的字符串 
                    lines[3] = '\'' + lines[3] + '\',' 
                elif lines[3].find('INT meta') <> -1:                #过滤Int类型的字段为负数后带的(),正数不受影响 
                    lines[3] = lines[3].split('/*')[0].strip() 
                    lines[3] = lines[3].split()[0] + ',' 
                elif lines[3].find('NULL') <> -1: 
                    lines[3] = lines[3].split('/*')[0].strip() 
                    lines[3] = lines[3] + ',' 
                else: 
                    lines[3] = lines[3].split('/*')[0].strip('\'').strip().strip('\'').replace('\\','').replace('\'','\\\'')  #这里过滤掉转义的字符串 
                    lines[3] = '\'' + lines[3].strip('\''' ') + '\',' 
            if  ''.join(lines).find('@') <> -1 and lines[3].split('=',1)[0] == num:          #num为列数,要是小于最大的列数,后面均加); 
                lines[3] = lines[3].split('=',1)[-1].strip() 
                if lines[3].find('\'') <> -1:  
                    lines[3] = lines[3].split('/*')[0].strip('\'').strip().strip('\'').replace('\\','').replace('\'','\\\'')  #同上 
                    lines[3] = '\'' + lines[3] + '\');' 
                elif lines[3].find('INT meta') <> -1:                #同上 
                    lines[3] = lines[3].split('/*')[0].strip() 
                    lines[3] = lines[3].split(' ')[0] + ');' 
                elif lines[3].find('NULL') <> -1: 
                    lines[3] = lines[3].split('/*')[0].strip() 
                    lines[3] = lines[3] + ');' 
                else: 
                    lines[3] = lines[3].split('/*')[0].strip('\'').strip().strip('\'').replace('\\','').replace('\'','\\\'')  #同上 
                    lines[3] = '\'' + lines[3].strip('\''' ') + '\');' 
            print ' '.join(lines[1:]) 
        if lines == '': 
            break 
if __name__ == '__main__': 
    import sys 
    read_binlog(sys.argv[1],sys.argv[2])

6.查看tablename.sql文件语句确认没有问题,执行语句即可恢复删除数据

mysql 误删除数据恢复相关推荐

  1. windows下mysql误删除数据恢复

    1.进入到mysql所在的bin目录 mysql -u root -p -default-character-set=utf8 命令解释: -default-character-set:设置登录mys ...

  2. Mysql数据库误删除数据恢复成功

    Mysql数据库误删除数据恢复成功 [客户描述] 客户在网站管理后台误操作把"报表"和"代理"数据删除,因数据库只有2月份的备份,丢失近三个月的数据. [数据库 ...

  3. win32 mysql误删数据恢复_mysql误删数据恢复

    原创 mysql误删数据恢复我这里搜了一下,貌似好多方法,搜索表后是因为表太多所以看不完所以就看到了这篇文章,你看看你的数据重建了吗?或者点击按钮在目录下的文件恢复? 试试这个,如果没有的话,说明这个 ...

  4. 阿里云rds mysql数据库数据恢复到ecs中

    背景: aliyun上的rds数据库快满了,于是删除了某个备份的表 后面大boss说是有用的表,需要恢复回来,阿里云有7天内的物理全量备份(通过percona-xtrabackup备份的) 第一时间应 ...

  5. mysql误删除表后无法重建

    mysql误删除表,数据库为demo 情况:删除表problem提示不存在,新建problem表又提示已存在 解决方案 1.新建一个数据库test,执行create建表语句 2.cp 命令将test下 ...

  6. MySQL binlog 数据恢复

    不求人,MySQL Binlog数据恢复 文章目录 不求人,MySQL Binlog数据恢复 浅谈恢复形式 开启 binlog 及配置 删库跑路(搭建测试数据库,然后删除它) 起死回生(分析binlo ...

  7. 宝塔数据库mysql误删除快速恢复

    转载请注明: 藏羚骸的博客~宝塔数据库mysql误删除快速恢复. 新来的实习女大学生,在工作中,更新项目时一键清空大量数据表里的数据,是在没办法了找到我,仓皇失措泫然欲泣的,怕公司让自己承担损失,那么 ...

  8. mysql 误删除ibdata1,MySQL 误删除ibdata1之后的恢复方法

    这篇文章主要为大家详细介绍了MySQL 误删除ibdata1之后的恢复方法,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编小韵来看看吧! mysql 误删除ibd ...

  9. 误删阿里云mysql恢复数据恢复_mysql数据库误删除后的数据恢复操作说明-阿里云开发者社区...

    在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失! 然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么 ...

  10. Mysql主从异常 表被回滚_oracle表回滚到一个指定时间的操作语句 oracle 误删除数据恢复...

    -- 1. 添加恢复功能. alter table 表名 enable row movement; -- 2. 查看恢复记录 select * from 表名 as of timestamp to_t ...

最新文章

  1. 数据结构--树和二叉树
  2. c语言中浮点数和整数转换_C中的数据类型-整数,浮点数和空隙说明
  3. 高效排序算法(快排序)
  4. 攻防世界Reverse第九题no-strings-attached
  5. uint8、double、mat2uint、imhist绘直方图w恩替藐视
  6. CSS实现自适应的图片背景边框代码
  7. 嵌入式成长轨迹23 【Linux应用编程强化】【Linux下的C编程 下】【Linux GUI编程】...
  8. php导出大量excel表,php导出大量数据到excel时,有哪些比较好的处理方法?
  9. labelimg如何调整框的颜色_P图改字:来看看吧!教你如何用PS墙壁发光灯泡广告文字图片...
  10. android+php最佳实践视频,Android和PHP开发最佳实践 PDF 第2版
  11. dpkg和apt-get命令的用法
  12. amd服务器开启虚拟化,记一次 AMD 虚拟化 IOMMU 开启过程
  13. Flex与Servlet之间数据的交互
  14. ElasticSearch全文搜索引擎之入门以及环境搭建
  15. Canvas对画布及文字控制基础API学习
  16. zepto 操作 cookie
  17. 魅族mx4pro刷linux,魅族MX4 Pro刷recovery教程_魅族MX4 Pro第三方recovery下载
  18. FeHelper的安装、使用
  19. 用latex生成pdf文件后,文本复制粘贴显示乱码
  20. Vue3 非常好用的中文文档以及一份 Vue 3 新文档学习笔记

热门文章

  1. netstat命令和ss命令
  2. Bitmap图片去除白色背景
  3. 搜狗站长平台 不用审核强制提交sitemap的方法
  4. 七夕到了 —— 属于 Java 的浪漫,拿去吧~ 祝表白成功
  5. mysql 字段名 减号_MySQL减号
  6. java查找pdf关键字_java实现查找PDF关键字所在页码及其坐标
  7. 生化危机4重生 java_生化危机-绝密报告4
  8. Markdown - 如何给文本加下划线
  9. 你本是一个肉体,是什么驱使你前行【3】
  10. 数据结构_树状数组 详解