mariadb数据库误操作的克星-flashback

写在前面

对于数据库而言,误操作是很致命的,并且是很难完全避免的,除了规范DBA操作之外,还需要一个非常好用的快速闪回工具处理误操作问题。之前有同行发表过类似文章,介绍了诸如binlog2sql和姜承尧开发的增强版mysqlbinlog工具,今天我们介绍一下mariadb官方提供的mysqlbinlog工具的flashback功能,以供大家根据自身情况选择合适的闪回方案。。

flashback介绍

首先,说明一点,mariadb从10.2.4开始支持flashback功能,笔者测试使用的mariadb版本是10.2.11,这是目前最新稳定版本,该版本是通过mysqlbinlog工具增加了flashback功能,支持单库、单表的DML闪回,不支持DDL闪回。

mariadb提供的mysqlbinlog提供了如下特有的参数:

-B,--flashback Flashback feature canrollback you committed data to a

special time point.

-T,--table=name List entries for justthis table (local log only).

其他参数和普通的mysqlbinlog一样

对于DML闪回,包括update、delete和insert操作,以下分三种场景测试:

(注:这里不区分操作类型)

(1)单库闪回

假设测试库dbatest包括2个表,t1和mtest1

闪回前:

MariaDB [dbatest]> delete from t1;

Query OK, 1 row affected (0.00 sec)

MariaDB [dbatest]> delete from mtest1;

Query OK, 3 rows affected (0.00 sec)

闪回:

/usr/local/mariadb102/bin/mysqlbinlog -vvv -B -d dbatest --start-datetime='2017-12-14 17:4

6:09' 3930-binlog.000003 > flashback3.sql

说明:考虑到测试,这里没有设置停止时间点,实际上mysqlbinlog提供了--start-datetime,--stop-datetime,--start-position和--stop-position参数。

闪回后:

显然,刚才delete的多个表的数据闪回了。

(2)单表闪回

闪回前:

闪回:

/usr/local/mariadb102/bin/mysqlbinlog -vvv -B -d dbatest -T mtest1 --start-datetime='2017-12

-14 17:46:09' 3930-binlog.000003 > flashback3.sql

闪回后:

可见,单个表的数据闪回了。

(3)单事务部分sql闪回

一个事务包括多个sql,需要恢复其中一个sql操作

测试发现,无法恢复单个事务的一部分,其实,这也符合事务的原子性,要么回滚整个事务,要么整个事务不回滚。

总结

mariadb的mysqlbinlog提供的flashback功能,和姜承尧开发的类似只是参数不多,使用也比较简单。个人认为,可以考虑使用mariadb替代官方版mysql,可以使用更多的开源管理工具。

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我是攻城师

如何为logstash+elasticsearch配置索引模板?

60750
来自专栏码农二狗

使用shell搜索匹配文件

13830
来自专栏杨建荣的学习笔记

datapump简介(一) (r6笔记第2天)

datapump是在10g之后推出的新特性,无论从功能还是性能上,都有一定的改进,可以说在功能上丰富了很多,在性能上也提升了很多。可以说exp/imp中能实现的...

27150
来自专栏程序员同行者

优化mysql服务器

13520
来自专栏我是攻城师

Elasticsearch如何动态维护一个不可变的倒排索引

43590
来自专栏从零开始的linux

启动级别

# vim /etc/inittab # Default runlevel. The runlevels used are: # 0 - halt (Do ...

30180
来自专栏Java后端技术

Spring+SpringMvc+Mybatis框架集成搭建教程四(项目部署及测试)

(1).点击如下图所示的下拉按钮,弹出Edit Configurations...后点击该项。

9230
来自专栏FreeBuf

搭建属于你自己的维基站点:MediaWiki

MediaWiki 是一个全球著名的开源的,运行于 PHP+MySQL 环境下的 wiki 程序 。例如,全球最大的 wiki 项目 维基百科,就是使用 Med...

58960
来自专栏文渊之博

SQLServer中的死锁的介绍

简介 什么是死锁?      我认为,死锁是由于两个对象在拥有一份资源的情况下申请另一份资源,而另一份资源恰好又是这两对象正持有的,导致两对象无法完成操作,且...

27950
来自专栏Hongten

oracle系列--第三篇 Oracle的安装

=================================================

18020

扫码关注云+社区

领取腾讯云代金券