1.下载

https://github.com/danfengcao/binlog2sql

http://rpmfind.net

Search: python-pip

pip 是一个Python包管理工具,主要是用于安装 PyPI 上的软件包。

2. 安装

1
2
3
4
5
6
7
# yum install python-setuptools -y
# rpm -ivh python-pip-7.1.0-1.el6.noarch.rpm   --rpmfind.net 下载上传安装
# pip install PyMySQL
# pip install -r requirments.txt
# pwd
/usr/local/binlog2sql-master/binlog2sql-master
# less README.md  --这个必须要看个十遍,八遍的才行

3. 测试用例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(root@localhost) [kk]> create database roidba;
Query OK, 1 row affected (0.00 sec)
  
(root@localhost) [kk]> use roidba
Database changed
(root@localhost) [roidba]> create table roidba ( id int,name varchar(10));
Query OK, 0 rows affected (0.15 sec)
  
(root@localhost) [roidba]> insert into roidba values(1,'mysql');
Query OK, 1 row affected (0.00 sec)
  
(root@localhost) [roidba]> insert into roidba values(2,'oracle');
Query OK, 1 row affected (0.00 sec)
  
(root@localhost) [roidba]> insert into roidba values(3,'mariadb');
Query OK, 1 row affected (0.00 sec)
(root@localhost) [roidba]> delete from roidba;
Query OK, 3 rows affected (0.01 sec)
(root@localhost) [roidba]> select * from roidba;
Empty set (0.00 sec)

4. 创建闪回用户

1
2
3
4
5
(root@localhost) [roidba]> GRANT SELECT,REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO flashback@'%' identified by 'flashback';  
Query OK, 0 rows affected (0.04 sec)
  
(root@localhost) [roidba]> flush privileges;
Query OK, 0 rows affected (0.05 sec)

5. 闪回的要求

1
2
3
4
5
6
7
8
9
10
1)知道大概的时间点2017-01-12 18:00 ~ 2017-01-12 18:00
2)知道binlog信息
(root@localhost) [roidba]> show binary logs;
+------------------+----------------+
| Log_name  | File_size |
+------------------+----------------+
| mysql-bin.000001 |3828 |
| mysql-bin.000002 | 238 |
| mysql-bin.000003 |1231 |
+------------------+---------------+

6. 解析

1
2
3
4
5
6
7
8
9
10
11
12
--binlog中解析的sql
[root@mysql-121 binlog2sql-master]# python binlog2sql/binlog2sql.py -h192.168.80.132 -P3306 -uflashback -pflashback -droidba -troidba --start-file='mysql-bin.000003' --start-datetime='2017-01-12 18:00:00' --stop-datetime='2017-01-12 18:30:00'
INSERT INTO `roidba`.`roidba`(`id`, `name`) VALUES (1, 'mysql'); #start 239 end 413 time 2017-01-12 18:10:54
INSERT INTO `roidba`.`roidba`(`id`, `name`) VALUES (2, 'oracle'); #start 492 end 667 time 2017-01-12 18:11:00
INSERT INTO `roidba`.`roidba`(`id`, `name`) VALUES (3, 'mariadb'); #start 746 end 922 time 2017-01-12 18:11:08
DELETE FROM `roidba`.`roidba` WHERE `id`=1 AND `name`='mysql' LIMIT 1; #start 1001 end 1200 time 2017-01-12 18:11:14
DELETE FROM `roidba`.`roidba` WHERE `id`=2 AND `name`='oracle' LIMIT 1; #start 1001 end 1200 time 2017-01-12 18:11:14
DELETE FROM `roidba`.`roidba` WHERE `id`=3 AND `name`='mariadb' LIMIT 1; #start 1001 end 1200 time 2017-01-12 18:11:14
USE roidba;
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'flashback'@'%' IDENTIFIED BY PASSWORD '*6DE874C277DDA35061BD526FB38B6A3C8B3A9254';
USE roidba;
flush privileges;

7. 闪回

1
2
3
4
5
6
7
8
--闪回sql
# python binlog2sql/binlog2sql.py -h192.168.80.132 -P3306 -uflashback -p'flashback' -droidba -troidba --start-file='mysql-bin.000003' --start-position=1001 --stop-position=1200 -B > rollback.sql
[root@mysql-121 binlog2sql-master]# less rollback.sql
INSERT INTO `roidba`.`roidba`(`id`, `name`) VALUES (3, 'mariadb'); #start 1001 end 1200 time 2017-01-12 18:11:14
INSERT INTO `roidba`.`roidba`(`id`, `name`) VALUES (2, 'oracle'); #start 1001 end 1200 time 2017-01-12 18:11:14
INSERT INTO `roidba`.`roidba`(`id`, `name`) VALUES (1, 'mysql'); #start 1001 end 1200 time 2017-01-12 18:11:14
--开始回滚
[root@mysql-121 binlog2sql-master]# mysql -ubackup -pbackup -h192.168.80.132 <./rollback.sql   --具有插入权限才可以

8.验证

自己多测试,多动手,看别人做很简单,其实真的自己上手就不一定了,少说多做,少扯淡。

Mysql闪回技术之 binlog2sql的更多相关文章

  1. (4.11)mysql备份还原——mysql闪回技术(基于binlog)

    0.闪回技术与工具简介 mysql闪回工具比较流行三大类: [0.1]官方的mysqlbinlog:支持数据库在线/离线,用脚本处理binlog的输出,转化成对应SQL再执行.通用性不好,对正则.se ...

  2. MySQL 闪回工具之 binlog2sql

    生产上误删数据.误改数据的现象也是时常发生的现象,作为 DBA 这时候就需要出来补锅了,最开始的做法是恢复备份,然后从中找到需要的数据再进行修复,但是这个时间太长了,对于大表少数数据的修复来讲,动作太 ...

  3. Mysql闪回工具之binlog2sql的原理及其使用

    生产上误删数据.误改数据的现象也是时常发生的现象,作为运维这时候就需要出来补锅了,最开始的做法是恢复备份,然后从中找到需要的数据再进行修复,但是这个时间太长了,对于大表少数数据的修复来讲,动作太大,成 ...

  4. MySQL闪回工具之binlog2sql

    一.binlog2sql 1.1 安装binlog2sql git clone https://github.com/danfengcao/binlog2sql.git && cd b ...

  5. mysql 闪回原理

    利用MySQL闪回技术恢复误删除误更改的数据 笔者相信很多人都遇到过忘带where条件或者where条件漏写了一个和写错了的情况,结果执行了delete/update后把整张表的数据都给改了.传统的解 ...

  6. Mysql 之闪回技术 binlog2sql

    1.下载 https://github.com/danfengcao/binlog2sql http://rpmfind.net Search: python-pip pip 是一个Python包管理 ...

  7. MySQL闪回工具之myflash 和 binlog2sql

    MySQL闪回工具之:binlog2sql  https://github.com/danfengcao/binlog2sql MYSQL Binglog分析利器:binlog2sql使用详解  :h ...

  8. mysql闪回工具--binlog2sql实践

    DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚.传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据.此法费时费力,甚至需要停机维护 ...

  9. MySQL闪回原理与实战

    本文将介绍闪回原理,给出笔者的实战经验,并对现存的闪回工具作比较. DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚.传统恢复方法是利用备份重搭实例,再应用去除 ...

随机推荐

  1. vue生命周期钩子,一张图片

  2. PostgreSQL配置文件--连接和认证

    1 连接和认证 CONNECTIONS AND AUTHENTICATION 1.1 连接 CONNECTIONS 1.1.1 listen_addresses 字符型 默认: listen_addr ...

  3. angular get/post 下载 excel

    阅读目录 get请求 post请求 最近做项目,就碰到一个导出excel表格的功能.原本是想利用web前台导出excel的,但是最后因为两点放弃了,第一点,因为中文乱码,第二点,有分页(在前台导出ex ...

  4. scrapy-splash抓取动态数据例子十四

    一.介绍 本例子用scrapy-splash爬取超级TV网站的资讯信息,输入给定关键字抓取微信资讯信息. 给定关键字:数字:融合:电视 抓取信息内如下: 1.资讯标题 2.资讯链接 3.资讯时间 4. ...

  5. docker实战——Docker本地私有镜像仓库Harbor搭建及配置

    Harbor介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然docker官方提供了公共的镜像仓库(Docker Hub),但是从安全和效率等方面考虑,部署我们私有环境内的Registr ...

  6. iOS-国家代码选择功能github开源分享

    三行代码集成国家区号选择功能 功能执行效果如图: 开源链接: https://github.com/qxuewei/XWCountryCode 用法: 1.导入XWCountryCode类 2.在须要 ...

  7. AbstractQueuedSynchronizer源码分析

    AbstractQueuedSynchronizer源码分析 前提 AQS(java.util.concurrent.locks.AbstractQueuedSynchronizer)是并发编程大师D ...

  8. Idea maven多模块项目有些加载不出来

    进入View>Tool Windows>Maven projects区域,添加新的项目识别. 选择要加载项目的pom.xml文件,ok 完成.

  9. 非常酷的 Javascript 简单调试工具Blackbird

    Blackbird 是一个开源的 Javascript 调试工具,默认提供一种非常酷的方式展现 Javascript 调试信息,如下图,效果如何呢? 在我们的日常的学习或工作中,经常都会接触到 Jav ...

  10. asp.net core mvc视频A:笔记5-1.路由规则

    方法一:通过MapRoute方法,配置文件位置 小例子:如果所有路径都要在admin下,可以这样写 方法二:通过路由属性 相对路由 现在需要加/admin/home/index才能正常访问原来的默认页 ...