当前位置: 首页 > news >正文

mysql5.6整表数据删除binlong恢复

binlog处理

binlog恢复有2种,

1,用mysql自带的mysqlbinlog 工具

2,用阿里人开发的binlog2sql和mysqlbinlog_flashback这里用binlog2sql

 

 

 

1,用mysql自带的mysqlbinlog 工具


 

---------------------------- 开始----------------------------

shell脚本如下,前提条件必须是MySQL开启binlog,使用ROW模式:

 

#!/bin/sh

binlogname=master-bin.000066

stdate="2017-12-27 19:00:00"

endate="2017-12-27 21:00:00"

txtname=arc_rule_engine.txt

sqlname=arc_rule_engine_ins.sql

delete_tabname='`arc_t`.`arc_rule_engine`'

 

mysqlbinlog --no-defaults --base64-output=decode-rows -v -v --start-datetime="${stdate}" --stop-datetime="${endate}" $binlogname| sed -n "/### DELETE FROM ${delete_tabname}/,/COMMIT/p" > $txtname

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

 

参数描述:

binlogname=指定binlog文件路径

stdate=指定恢复起始时间

endate=指定恢复截止时间

txtname=指定文本文件

sqlname=指定恢复后输出到SQL文件

delete_tabname=指定待恢复库名表名

-----------结束--------------------------


 

 

2,通过binlog2sql数据恢复

1),安装

shell> git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
shell> pip install -r requirements.txt
注意:如果没有git和pip命令请按照
ubuntu:
apt-get install git
apt-get install python-pip
centos:

       yum install epel* -y

       yum install pyhton-pip

       yum install pymysql

2,)数据恢复

    python binlog2sql/binlog2sql.py -h192.168.106.76 -P3306 -uroot -p'Hello1234' -darc_t -tarc_rule_engine --start-file='master-bin.000066' --start-datetime

   python binlog2sql/binlog2sql.py -h192.168.106.76 -P3306 -uroot -p'Hello1234' -darc_t -tarc_rule_engine --start-file='master-bin.000066' --start-datetime='2017-12-27 19:00:00' --stop-datetime='2017-12-27 21:00:00'

--数据查看

python binlog2sql/binlog2sql.py -h192.168.106.76 -P3306 -uroot -p'Hello1234' -darc_t -tarc_rule_engine --start-file='master-bin.000066' --sql-type DELETE

--数据恢复

python binlog2sql/binlog2sql.py  --flashback -h192.168.106.76 -P3306 -uroot -p'Hello1234' -darc_t  -tarc_rule_engine  --start-file='master-bin.000066' --sql-type DELETE > flashback.sql

 到处sql直接执行就可以了

3),参数解析: 

mysql连接配置

-h host; -P port; -u user; -p password

解析模式

--stop-never 持续解析binlog。可选。,默认False,同步至执行命令时最新的binlog位置。

-K, --no-primary-key 对INSERT语句去除主键。可选。默认False

-B, --flashback 生成回滚SQL,可解析大文件,不受内存限制。可选。默认False。与stop-never或no-primary-key不能同时添加。

--back-interval -B模式下,每打印一千行回滚SQL,加一句SLEEP多少秒,如不想加SLEEP,请设为0。可选。默认1.0。

解析范围控制

--start-file 起始解析文件,只需文件名,无需全路径 。必须。

--start-position/--start-pos 起始解析位置。可选。默认为start-file的起始位置。

--stop-file/--end-file 终止解析文件。可选。默认为start-file同一个文件。若解析模式为stop-never,此选项失效。

--stop-position/--end-pos 终止解析位置。可选。默认为stop-file的最末位置;若解析模式为stop-never,此选项失效。

--start-datetime 起始解析时间,格式'%Y-%m-%d %H:%M:%S'。可选。默认不过滤。

--stop-datetime 终止解析时间,格式'%Y-%m-%d %H:%M:%S'。可选。默认不过滤。

对象过滤

-d, --databases 只解析目标db的sql,多个库用空格隔开,如-d db1 db2。可选。默认为空。

-t, --tables 只解析目标table的sql,多张表用空格隔开,如-t tbl1 tbl2。可选。默认为空。

--only-dml 只解析dml,忽略ddl。可选。默认TRUE。

--sql-type 只解析指定类型,支持INSERT, UPDATE, DELETE。多个类型用空格隔开,如--sql-type INSERT DELETE。可选。默认为增删改都解析。用了此参数但没填任何类型,则三者都不解析。

4) ,参考:https://mp.weixin.qq.com/s/1Y6xLIwK9_Lx5eCiBBm9jQ

    https://github.com/danfengcao/binlog2sql
 

转载于:https://www.cnblogs.com/codedevelop/p/8136202.html

相关文章:

  • 装饰器函数
  • 传奇物品叠加设置方法
  • 使用selenium抓取淘宝的商品信息
  • JAVA-初步认识-常用对象API(集合框架-概述)
  • 九:动态规划-最大的算式
  • ssl1104-USACO 2.1城堡(foodfill)【图论,广搜】
  • C#多线程技术提高RabbitMQ消费吞吐率
  • 2017年总结的前端文章——border属性的多方位应用和实现自适应三角形
  • django之中间件
  • 推荐系统的基本概念及其在各个领域的应用
  • Linux 计划任务
  • 分布式系统事务一致性解决方案
  • Linux如何让进程在后台运行的三种方法详解
  • C#启动或停止 计算机中“服务”
  • Bootstarp学习
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • canvas绘制圆角头像
  • css系列之关于字体的事
  • iOS小技巧之UIImagePickerController实现头像选择
  • JavaScript对象详解
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • PHP 的 SAPI 是个什么东西
  • Puppeteer:浏览器控制器
  • React-flux杂记
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Spring-boot 启动时碰到的错误
  • v-if和v-for连用出现的问题
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 动态规划入门(以爬楼梯为例)
  • 给初学者:JavaScript 中数组操作注意点
  • 聚簇索引和非聚簇索引
  • 聊聊directory traversal attack
  • 删除表内多余的重复数据
  • 设计模式走一遍---观察者模式
  • 跳前端坑前,先看看这个!!
  • AI算硅基生命吗,为什么?
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • (1)Android开发优化---------UI优化
  • (编译到47%失败)to be deleted
  • (定时器/计数器)中断系统(详解与使用)
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (算法)前K大的和
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (原創) 物件導向與老子思想 (OO)
  • .Net 8.0 新的变化
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET 设计一套高性能的弱事件机制
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • /boot 内存空间不够
  • @Autowired和@Resource的区别
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...