Mysql 之闪回技术 binlog2sql
1.下载
https://github.com/danfengcao/binlog2sql
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的更多相关文章
- (4.11)mysql备份还原——mysql闪回技术(基于binlog)
0.闪回技术与工具简介 mysql闪回工具比较流行三大类: [0.1]官方的mysqlbinlog:支持数据库在线/离线,用脚本处理binlog的输出,转化成对应SQL再执行.通用性不好,对正则.se ...
- Oracle闪回技术详解
概述: 闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复(多数闪回功能都能在数据库联机状态下完成).需要注意的是,闪回技术旨在快速 ...
- Oracle闪回技术(Flashback)
闪回技术有闪回表.闪回删除.闪回查询.闪回事务查询.闪回事务.闪回数据库.闪回数据归档.其中,闪回查询.闪回事务查询用来“观察”过去:闪回数据归档并不是一个独立的功能,其功能是扩展闪回查询的时间窗口: ...
- OCP读书笔记(10) - 使用闪回技术I
使用闪回技术查询数据 闪回查询:就是查询表在过去某个时间点的数据,所用到的技术就是undo数据 SQL> conn scott/tiger 创建测试表 SQL> create table ...
- Oracle 六闪回技术,flashback
Flashback 技术基于Undo segment基于内容的, 因此,限制UNDO_RETENTON参数. 要使用flashback 特征,您必须启用自己主动撤销管理表空间. 在Oracle 11g ...
- Oracle的闪回技术--闪回错误的DML操作
提交DML操作后,该操作使用的还原段就可以被其它对象使用了,为了保证闪回操作时这些数据仍然被保存在还原段中,可能需要重新设置undo_retention参数,表示一个事务提交后,该事务的数据必须保存在 ...
- Oracle闪回技术
(一)闪回技术概要 闪回技术是数据库备份与恢复的重要补充手段,主要包括以下7种特性: 特性 原理 数据库支持 闪回查询(Flashback Query) 利用undo表空间中的回退信息,查询过去某个时 ...
- Oracle的闪回技术--闪回已删除的表
注意闪回技术只能保护非系统表决空间中的表,而且表空间必须本地管理, 外键将不可以被恢复, 索引和约束的名字将会被命名为以BIN开头,由系统生成的名字 查看是否开启闪回: SQL> show pa ...
- SQL Fundamentals: 表的创建和管理(表的基本操作,闪回技术flashback,表结构修改)
SQL Fundamentals || Oracle SQL语言 1.表的基本操作 (CREATE TABLE, DROP TABLE,TRUNCATE TABLE, RENAME tablename ...
随机推荐
- Kafka Consumer API样例
Kafka Consumer API样例 1. 自动确认Offset 说明参照:http://blog.csdn.net/xianzhen376/article/details/51167333 Pr ...
- 目前支持WebGL的浏览器有哪些?
Google Chrome 9+ Mozilla Firefox 4+ Safari 5.1+(仅限于Mac OS X操作系统,不包括Windows) Opera 12 alpha及以上版本 IE9+ ...
- JS中encodeURIComponent函数用php解码的代码
JS中encodeURIComponent函数给中文编码后,如何用php解码?? 前提:编码前的中文可能是gbk,gb2312,utf-8等. 复制代码 代码如下: urldecode() iconv ...
- How to implement a windbg plugin
How to implement a windbg plugin Define EXT_CLASS #include "lauxlib.h" class EXT_CLASS : p ...
- create-react-app 搭建的项目中,让 antd 通过侧边栏导航 Menu 的 Menu.Item 控制 Content 部分的变化
第一种:BrowserRouter把Menu和Route组给一起包起来 <Router></Router> 标签要把Menu和Route组给一起包起来 修改src/index. ...
- ElasticSearch(六)底层索引控制
相似度算法 涉及到了ES的底层,首先讲一下ES的底层核心,相似度模型,ES的查询和传统的数据库查询最大的差别就在相似度查询(之前讲过,索引存储的最大差别就是讲非结构化数据转化为结构化),ES里面会给文 ...
- ubuntu下pycharm调用Hanlp实践分享
前几天看了大快的举办的大数据论坛峰会的现场直播,惊喜的是hanlp2.0版本发布.Hanlp2.0版本将会支持任意多的语种,感觉还是挺好的!不过更多关于hanlp2.0的信息,可能还需要过一段时间才能 ...
- App音频内录 录音
1.android模拟器 天天模拟器+BlueStacks 2.高清内录软件 Audio Record Wizard.exe 3.音频剪切软件 Adobe Audition CS6
- [转] LINUX内核代码编程规范
这是一个简短的文档,描述了linux内核的首选代码风格.代码风格是因人而异的,而且我 不愿意把我的观点强加给任何人,不过这里所讲述的是我必须要维护的代码所遵守的风格, 并且我也希望绝大多数其他代码也能 ...
- verilog代码 想法验证---与寄存器输出有关
verilog代码 想法验证---与寄存器输出有关 1. module test_mind( input wire clk, input wire reset, input wire i, outpu ...