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 条评论
登录 后参与评论

相关文章

来自专栏Eternally运维

个人认为比较重要的MySQL—innodb参数详解

innodb_io_capacity:脏页的刷新的数量,可以动态调整,默认是200,该参数的设置取决于硬盘的IOPS的大小,IOPS就是每秒的读写次数。

1786
来自专栏北京马哥教育

原创投稿 | 如何为Django添加中文搜索服务

云豆贴心提醒,本文阅读时间7分钟 在使用python的过程中,必然会设计到如何创建web应用,而搜索功能却最为常见,该文档包含了如何整合haystack,el...

28510
来自专栏数据和云

如何在多租户环境下使用数据库的闪回功能

编辑手记:对于数据库的闪回功能,可能大家都不陌生,那么如何在多租户环境下使用该功能,如果关闭了表空间的闪回功能,会给数据库带来哪些影响?我们一起来学习。 本文来...

3435
来自专栏Hongten

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

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

1482
来自专栏LanceToBigData

MySQL集群(一)之主从复制

前面学完了JDBC,接下来带大家感受一下MySQL集群!其实什么是MySQL集群?简单的说就是一群机器(服务器)的集合,它们连在一起来工作。 其实各种数据库都有...

2535
来自专栏码农二狗

使用shell搜索匹配文件

1153
来自专栏维C果糖

详述 MySQL 导出数据遇到 secure-file-priv 的问题

ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv opti...

3246
来自专栏我是攻城师

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

3949
来自专栏乐沙弥的世界

Oracle 备份恢复概念

数据库维护中,备份或恢复是重中之重的问题。尽管很多时候数据库系统运行缓慢,但对数据库数据的丢失而言,显然后者损失的代价是

1092
来自专栏数据和云

性能优化:调整 I/O 相关的等待

编辑手记:对Oracle数据库进行调整优化,基本上最终都可以归结到I/O调整上,因此,了解如何来优化Oracle数据库的I/O对于一个DBA来说就显得至关重要。...

2433

扫码关注云+社区