前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mariadb数据库误操作的克星-flashback

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

作者头像
企鹅号小编
发布2018-02-28 16:36:04
2.2K0
发布2018-02-28 16:36:04
举报
文章被收录于专栏:企鹅号快讯企鹅号快讯

写在前面

对于数据库而言,误操作是很致命的,并且是很难完全避免的,除了规范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,可以使用更多的开源管理工具。

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

如有侵权,请联系 cloudcommunity@tencent.com 删除。

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

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档