mysql dml回滚_mysql binlog回滚/闪回,前滚, 分析各表DML情况, 找出长事务与大事务...

简介

binlog_inspector通过解释mysql/mariadb binlog/relaylog实现以下三大功能:

1)flashback/闪回/回滚, 实现DML的回滚到任意时间或者位置。

生成的SQL形式如下

```sql

begin

DELETE FROM `binlog_inspector`.`emp` WHERE `id`=1

# datetime=2017-10-23_00:14:28 database=binlog_inspector table=emp binlog=mysql-bin.000012 startpos=417 stoppos=575

commit

```

2)前滚,把binlog/relaylog的DML解释成易读的SQL语句。

生成的SQL形式如下

```sql

begin

# datetime=2017-10-23_00:14:28 database=binlog_inspector table=emp binlog=mysql-bin.000012 startpos=417 stoppos=575

INSERT INTO `binlog_inspector`.`emp` (`id`,`name`,`sr`,`icon`,`points`,`sa`,`sex`) VALUES (1,'张三1','华南理工大学&SCUT',X'89504e47',1.1,1.1,1)

commit

```

3)统计分析, 统计各个表的DML情况, 找出大事务与长事务。

dml_report.pnglong_big_trx.png

*以上功能均可指定任意的单库多库, 单表多表, 任意时间点, 任意binlog位置。

*支持mysql5.5及以上,也支持mariadb的binlog, 支持传统复制的binlog, 也支持GTID的binlog。

*支持直接指定文件路径的binlog, 也支持主从复制, binlog_inspector作为从库从主库拉binlog来过解释。

*也支持目标binlog中包含了DDL(增加与减少表字段, 变化表字位置)的场景。

限制

*binlog格式必须为row,且binlog_row_image=full

*只能回滚DML, 不能回滚DDL

*支持V4格式的binlog, V3格式的没测试过

适用场景

1)数据被误操作, 需要把某几个表的数据不停机回滚到某个时间点

2)数据异常, 帮忙从binlog中找出这个表的某些数据是什么时间修改成某些值的

3)IO高TPS高, 帮忙查出那些表在频繁更新

4)需要把这个表从昨晚1点到3点的更新提供给开发查问题

5)帮忙找出某个时间点数据库是否有大事务或者长事务

特点

1)速度快。 解释512MB的binlog:

1.1)生成回滚的SQL只需要1分26秒(6线程)

time_rollback.png

1.2)生成前滚的SQL只需要1分26秒(6线程)

time_2sql.png

1.3)生成表DML统计信息, 大事务与长事务统计信息只需要55秒

time_stats.png

1.4)mysqlbinlog解释同样的binlog只需要36秒

time_mysqlbinlog.png

2) 支持V4版本的binlog, 支持传统与GTID的binlog, 支持mysql5.5与mairiadb5.5及以上版本的binlog, 也同样支持relaylog(结果中注释的信息binlog=xxx startpos=xxx stoppos=xx是对应的主库的binlog信息)

--mtype=mariadb

3)支持以时间及位置条件过滤, 并且支持单个以及多个连续binlog的解释。

解释binlog的开始位置:

--start-binlog=mysql-bin.000101

--start-pos=4

解释binlog的结束位置:

--stop-binlog=mysql-bin.000105

--stop-pos=4

解释binlog的开始时间

--start-datetime="2018-04-21 00:00:00"

解释binlog的结束时间

--stop-datetime="2018-04-22 11:00:00"

4)支持以库及表条件过滤, 以逗号分隔

--databases=db1,db2

--tables=tb1,tb2

5)支持以DML类型(update,delete,insert)条件过滤

--sqltypes=delete,update

6) 支持分析本地binlog,也支持复制协议, binlog_inspector作为一个从库从主库拉binlog来本地解释

--mode=file //解释本地binlog

--mode=repl //binlog_inspector作为slave连接到主库拉binlog来解释

7)输出的结果支持一个binlog一个文件, 也可以一个表一个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值