投稿入口|热门专题|网站地图|移动官网|微信编辑器|小程序商店
您的当前位置:网站首页 > 电脑教程 > 数据库 > 正文

MySQL遭遇DELETE误操作的回滚

来源:[db:来源] 编辑:小蚂蚁站长 时间:2018-01-12 14:53:12 阅读:

方法:

条件:开启Binlog,Format为Row。

步骤:

1.通过mysql自带工具mysqlbinlog 指定导出操作的记录:

  1. mysqlbinlog
  2. --no-defaults
  3. --start-datetime='2012-12-25 14:56:00'
  4. --stop-datetime='2012-12-25 14:57:00'
  5. -vv mysql-bin.000001 > /home/zhoujy/restore/binlog.txt

2.数据取出来之后,需要把数据解析反转,原始数据:

  1. ### DELETE FROM test.me_info
  2. ### WHERE
  3. ### @1=2165974 /* INT meta=0 nullable=0 is_null=0 */
  4. ### @2='1984:03:17' /* DATE meta=0 nullable=1 is_null=0 */
  5. ### @3=NULL /* DATE meta=765 nullable=1 is_null=1 */
  6. ### @4=2012-10-25 00:00:00 /* DATETIME meta=0 nullable=0 is_null=0 */
  7. ### @5='' /* VARSTRING(765) meta=765 nullable=1 is_null=0 */
  8. ### @6=0 /* TINYINT meta=0 nullable=1 is_null=0 */
  9. ### @7='' /* VARSTRING(765) meta=765 nullable=1 is_null=0 */
  10. ### @8=-1 (4294967295) /* INT meta=0 nullable=1 is_null=0 */
  11. ### @9=0 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
  12. ### @10=NULL /* MEDIUMINT meta=0 nullable=1 is_null=1 */
  13. ### @11=2 /* TINYINT meta=0 nullable=1 is_null=0 */
  14. ### @12=0 /* TINYINT meta=0 nullable=1 is_null=0 */
  15. ### @13='' /* VARSTRING(765) meta=765 nullable=1 is_null=0 */
  16. ### @14='' /* VARSTRING(765) meta=765 nullable=1 is_null=0 */
  17. ### @15=0 /* MEDIUMINT meta=0 nullable=1 is_null=0 */
  18. ### @16=320 /* INT meta=0 nullable=1 is_null=0 */
  19. ……………………
  20. ……………………
  21. ……………………

Row格式的binlog记录的格式如上面所示,需要做的工作就是吧Delete的操作转换成Insert操作,发上面的都是有一定规律的,并且需要注意的是:

1、字段类型 DATETIME 日期。在日志中保存的格式为 @4=2012-10-25 00:00:00,需要将2012-10-25 00:00:00加上引号。

2、负数。在日志中保存的格式为 @1=-1 (4294967295), -2(4294967294),-3(4294967293),需要将()里面的数据去掉,只保留@1=-1。

3、转义字符集。如:'s,/,等。

上面3点清楚之后,可以写一个脚本(水平有限,在提升中,写的不好看):

  1. #!/bin/env python
  2. # -*- encoding: utf-8 -*-
  3. #-------------------------------------------------------------------------------
  4. # Name: restore.py
  5. # Purpose: 通过Binlog恢复Delete误操作数据
  6. # Author: zhoujy
  7. # Created: 2012-12-25
  8. # update: 2012-12-25
  9. # Copyright: (c) Mablevi 2012
  10. # Licence: zjy
  11. #-------------------------------------------------------------------------------
  12. def read_binlog(file,column_num):
  13. f=open(file)
  14. num = '@'+str(column_num)
  15. while True:
  16. lines = f.readline()

相关文章推荐:

热门阅读推荐:

图文精选:

推荐文章
更多>>

产品运营

运营应该如何高效的做竞品分析,并找到

竞品分析最早源于经济学领域,是指对现有的或潜在的竞争产品的优势和劣势进行评价,互联网越来越……

热门文章
更多>>

用户运营

为什么要做用户行为分析?

用户行为分析帮助分析用户怎么流失、为什么流失、在哪里流失。分析的主要方式就是关注流失,尤其……

热门文章
更多>>

网站分析

【友盟+】广效监测U-ADplus:渠道引流的精细

 据U-ADplus服务的70万广告主样本数据显示,当下通过多渠道做流量导入的淘系商家中,星、钻、冠卖……

热门文章
更多>>

用户体验

一场活动结束后,如何防止新用户大量流

在谈“如何防止活动用户大量流失”这个话题之前,我必须先把一场活动的前前后后说清楚。……

热门文章
更多>>

APP运营

做好APP产品运营应该做的三件事?

作为移动端APP产品运营最重要的运营手段,消息推送(push)被越来越多的APP厂商所重视,在信息泛滥的移……

热门文章

Copyright©2012-2017小蚂蚁信息网版权所有 站长QQ:1614558876 粤ICP备14061018号-1


郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们QQ1614558876删除已转载的信息。

知道创宇云安全
Top