MYSQL官方截止目前还没有出来数据闪回特性,也许后续版本会出现。...社区有一些开源工具可以使用,沿用的基本都是彭立勋最早提出的思路,利用binlog对SQL进行反向解析,从而实现数据闪回,例如不带where条件的update操作,导致全表数据被误更新。...闪回前提: binlog_format = ROW 操作模拟: 没加where条件,导致全表更新;或者没加host列,导致多余行被更新。...闪回方式: 一、利用mysql自带的mysqlbinlog命令解析binlog,再通过grep、sed等命令把binlog中相关SQL误操作给逆向回来,然后导入SQL文件来恢复错误操作。...根据当时操作时间解析binlog mysqlbinlog -v --base64-output=decode-rows mysql-bin.000011 --start-datetime="2017-11
---- 前言 MyFlash 是美团点评开源的一个 MySQL 闪回工具,可以用来回滚 MySQL 中的 DML 操作,恢复到某时刻的数据。...本文将简单地介绍 MySQL 闪回工具 MyFlash 的使用。...如不指定,回滚到文件结尾。请指定正确的有效的位置,否则无法回滚。 --start-datetime 指定回滚的开始时间。注意格式必须是 %Y-%m-%d %H:%M:%S。如不指定,则不限定时间。...--stop-datetime 指定回滚的结束时间。注意格式必须是 %Y-%m-%d %H:%M:%S。如不指定,则不限定时间。 --sqlTypes 指定需要回滚的 sql 类型。...*/; 使用 MyFlash 工具进行回滚,进入到工具的安装目录,执行命令反向解析 binlog,指定要回滚的库、表、开始时间和结束时间,并指定反向解析的 SQL 语句类型: [root@10-186-
进行闪回数据库 基于时间点的闪回 SQL> flashback database to timestamp to_timestamp('2011-03-24 09:40:10','yyyy-mm-dd...3.如果闪回数据库的时间点之间进行了控制文件的恢复或重建,数据文件的收缩,或删除了某个表空间,则闪回将失败。...4.闪回日志在出现空间压力的情况下,oracle会自动删除闪回日志,则有可能导致无法闪回到指定的时间点。...如果希望闪回到指定的时间点,可进行如下操作 SQL> create restore point must_to_flashback guarantee flashback database; 这样我们就给当前时间点取...must_to_flashback这个名字,确保能闪回到该时间点上 5.闪回删除 只能用于非系统表空间和本地管理的表空间 6.
参考资料:Using Oracle Flashback Technology Oracle 11g的新特性闪回操作 闪回查询 闪回查询 闪回版本查询 闪回事务查询 闪回数据 闪回表 闪回删除 闪回数据...只要打开了闪回特性,就可以进行闪回操作。 闪回查询 参考资料:Using Oracle Flashback Query (SELECT AS OF) 查询某一个历史时间点的数据。...查询某个时间点表中的数据——某个时间点表中快照的数据。 SQL> create table t(x int , y int); 表已创建。...X Y ---------- ---------- 1 2 2 3 可见删除的数据已经提交,但是还是可以闪回查询到之前时间的数据...闪回数据库 参考资料:Oracle DB闪回(Flashback database)开启笔记 数据库的闪回 是Oracle不同于查询闪回和归档闪回的另外一种闪回机制 Oracle 10g引入 需要配置闪回区域
起始解析文件 --stop-file --终止解析文件 --start-position --起始解析位置 --stop-position --终止解析位置 --start-datetime --起始解析时间...--stop-datetime --终止解析时间,格式'%Y-%m-%d %H:%M:%S'。...-B --生成回滚SQL [root@wallet01 ~]# mysql -uroot -pabcd.1234 mysql> grant select,replication client,replication...]# mysql -utpcc -ptpcc mysql> select now(); +---------------------+ | now() | +--------... -utpcc -ptpcc < rollback.sql [root@wallet01 ~]# mysql -utpcc -ptpcc mysql> use tpcc Database changed
二、GaussDB T 的 Flashback Table 功能非常强劲可以闪回TRUNCATE Gaussdb提供了类似Oracle的闪回表功能;可以很好的应对drop table或者truncate...闪回被drop table SQL> flashback table roger.test to before drop; Succeed....那么truncate 的表能闪回吗 ? SQL> create table roger.test_copy as select * from roger.test ; Succeed....SQL> 可以看到成功闪回了被truncate table。 那么如果表被truncate之后,被写入数据之后,还能闪回吗? 下面测试一下。...可以看到非常强大;仍然可以进行闪回。。。。 这样妈妈再也不用担心数据被truncate了。。。。 那么如果表被ddl change了,还能闪回吗? 我们进一步验证一下呢?
直到彭立勋首次在MySQL社区为mysqlbinlog扩展了闪回功能。 在美团点评,我们也遇到过研发人员误删主站的配置信息,从而导致主站长达2个小时不可用的情况。...版本比较敏感,在MySQL 5.6上做的patch,基本不能用于MySQL 5.7的回滚操作。...总结了上述几种工具的优缺点,我认为理想的闪回工具需要有以下特性。 a. 无需把binlog解析成文本,再进行转换。 b. 提供原生的基于库、表、SQL类型、位置、时间等多种过滤方式。 c....因为我们在闪回操作时,不能简单的把每个event反转之后,然后再将所有event的顺序反转过来。...参考文档 MySQL官方文档1,2,3. binlog2sql. mysqlbinlog Flashback for 5.6. MySQL闪回原理与实战.
也有团队利用LVM快照来缩短恢复时间,但快照的缺点是会影响mysql的性能。 MySQL闪回(flashback)利用binlog直接进行回滚,能快速恢复且不用停机。...本文将简单进行mysql根据binlog闪回数据的实战测试 基础知识准备 binlog是二进制日志文件,用来记录Mysql内部对数据库的改动(只记录对数据的修改操作),主要用于数据库的主从复制以及增量恢复...所以有这种根据binlog得到执行sql语句、闪回sql语句,我们只需要利用根据分析binlog,然后就可以找到准确的数据改动sql,并得到闪回sql,检查无误后执行就可以恢复数据了 准备工作 我们采用...有三条语句 然后每一条语句的最后面还有这样子一段注释 #start 590075 end 590633 time 2019-09-14 22:05:35 这代表的是在log文件中的起始位置和结束位置 闪回...sql语句 我们有了起始位置和结束位置,就可以利用工具,得到这一部分变化的闪回sql了 前面的大部分参数都一样 后面的筛选日期参数变成了起始位置和结束位置的值 还有一个-B即可 python binlog2sql.py
闪回恢复其实是利用回收站的闪回恢复删除的表。利用MVCC机制闪回恢复到指定时间点或者CSN点(commit sequence number)。...采用闪回技术后,恢复已提交的数据库修改前的数据,只需要秒级,而且恢复时间和数据库大小无关。 闪回恢复适用于: • 误删除表的场景; • 需要将表中的数据恢复到指定时间点或者CSN。...闪回支持两种恢复模式: • 基于MVCC多版本的数据恢复:适用于误删除、误更新、误插入数据的查询和恢复,用户通过配置旧版本保留时间,并执行相应的查询或恢复命令,查询或恢复到指定的时间点或CSN点。...闪回查询可以查询过去某个时间点表的某个snapshot数据,这一特性可用于查看和逻辑重建意外删除或更改的受损数据。...• CSN参数:CSN是一个逻辑提交时间点,数据库中的CSN是一个写一致性点,查询某个CSN下的数据代表SQL查询数据库在该一致性点的相关数据。
首先尝试Flashback Query闪回数据。...dbms_flashback.get_system_change_number fscn from dual; FSCN ---------------------- 1551702 使用应用用户尝试闪回...根据业务提供的大致误操作时间,结合V$ARCHIVED_LOG视图,选择适当SCN向前执行闪回查询: SQL> select count(*) from emp1 as of scn 1551171...changed SQL> select count(*) from emp1 as of scn 1551244; COUNT(*) ---------- 14 最后选择恢复到SCN为1551244的时间点...由业务人员通过emp1_recov表确认,向当前表补回误删除的数据,至此闪回恢复成功。没有闪回特性的话,需要通过物理备份执行不完全恢复,或者找出足够及时的逻辑备份来进行恢复,其过程都可能是极其复杂的。
环境:RHEL 6.4 + Oracle 11.2.0.4 目录: 一、闪回查询 1.1 闪回查询举例 1.2 闪回版本查询举例 二、闪回事物 2.1 闪回事物查询的先决条件 2.2 闪回事物查询...三、闪回表 四、Flashback Data Archive 五、闪回数据库 5.1 配置闪回数据库 5.2 使用闪回数据库 5.3 监视闪回数据库 Reference 一、闪回查询 -- 初始化参数...-- 是否强制保留undo_retention的时间 select tablespace_name, retention from dba_tablespaces where tablespace_name...5.1 配置闪回数据库 5.1.1 开启闪回数据库: --必须配置闪回恢复区 show parameter db_recovery --必须归档模式 shutdown immediate; startup...mount exclusive; alter database archivelog; --设置闪回保留的目标时间(只是target,2880分钟=两天) alter system set db_flashback_retention_target
♣ 答案部分 Oracle闪回技术从根本上改变了数据恢复策略,利用闪回技术,可以使更正错误的时间大大缩短,而且它简单易用,使用一条短命令便可恢复整个数据库,而不必执行复杂的程序。...闪回技术分类: (1)闪回查询(Flashback Query):查询过去某个时间点或某个SCN值对应的表中的数据信息,即从回滚段中读取一定时间内对表进行操作的数据,恢复错误的DML操作。...(4)闪回表(Flashback TABLE):将表恢复到过去的某个时间点或某个SCN值时的状态。...(6)闪回数据库(Flashback Database):将数据库恢复到过去某个时间点或某个SCN值时的状态。...Oracle闪回技术从根本上改变了数据恢复策略,利用闪回技术,可以使更正错误的时间大大缩短,而且它简单易用,使用极少的命令便可恢复所需要的数据,而不必执行复杂的程序。
闪回恢复将修改数据,闪回点之后的数据将全部丢失。而闪回查询则可 以查询数据被DML的不同版本,也可以在此基础之上确定是否进行恢复等。本文主要描述flashback database的使用。...之后,将不能再flashback至resetlogs之前的时间点) 常用的场景:truncate table、多表发生意外错误等 使用闪回日志来实现数据库闪回,闪回点之后的数据将丢失 二、flashback...00:00:00 ora_rvwr_orcl --下面查看闪回区分配的大小为大约M,闪回分钟以内的数据则需要M左右的空间 --注意列oldest_flashback_time说明了允许返回的最早的时间点...步骤(前提归档日志可用) 关闭数据库 启动数据库到mount状态(exclusive模式) 闪回至某个时间点,SCN或log sequence number 使用resetlogs打开数据库...其次闪回能够恢复的程度取决于闪回空间的大小以及闪回的保留策略,闪回空间大小会被循环使用,而闪回的保留策略则决定了闪回日志保留的时间长度。总之,合理的平衡恢复速度与可用空间依赖于具体服务要求。
======================================== FLASHBACK DROP 特性允许在不丢失任何数据库的情况下将指定的表恢复至其被删除的时间点,并保持数据库为当前状态...本文主要讲述了FLASHBACK DROP特性以及闪回特性中回收站(RECYCLEBIN)的管理。...1) from "BIN$k1zC3yEiwZvgQAB/AQBRVw==$0"; --可以使用回收站名来访问对象,但要对对象加双引号 COUNT(1) ---------- 13 2.实施闪回并查看闪回后的情况...rename to newtbname; 第二条语句用于被删除的表名已经被再次重用,故闪回之前必须将其改名为新表名,schema不变化 9.如回收站中存在两个相同的原表名,则闪回时总是闪回最近的版本...,如果闪回特定的表,需要指定 该表在回收站中的名称。
我们可以在mysql事务处理过程中定义保存点(SAVEPOINT),然后回滚到指定的保存点前的状态。 定义保存点,以及回滚到指定保存点前状态的语法如下。...定义保存点—SAVEPOINT 保存点名; 回滚到指定保存点—ROLLBACK TO SAVEPOINT 保存点名: 下面演示将向表user中连续插入3条数据,在插入第2条数据的后面定义一个保存点,最后看看能否回滚到此保存点...事务开始 mysql> BEGIN; Query OK, 0 rows affected (0.00 sec) 3、向表user中插入2条数据 mysql> INSERT INTO user VALUES...| 3 | one | 0 | | | 4 | two | 0 | | | 5 | three | 0 | | +—–+———-+—–+——+ 5 rows in set (0.02 sec) 6、回滚到保存点...利用保存点可以实现只提交事务中部分处理的功能。
闪回版本查询同闪回查询,闪回表一样,同样是使用了UNDO段的数据,即数据变更的多次镜像 ,当UNDO段的数据由于空间压力而被清除,则产生无法闪回的情况。...) 闪回事务查询是对闪回版本查询的扩展。...从某种程度上来说,闪回版本查询通常用于更细粒度的查询,如针对特定的记录。而闪回事务则是 针对某一事务进行闪回,是基于事务级别的。...3.闪回中不能对DDL语句进行闪回,即闪回仅仅支持DML语句。...四、更多参考 有关闪回特性请参考 Oracle 闪回特性(FLASHBACK DATABASE) Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN) Oracle 闪回特性
Oracle 数据库闪回通常设置在 DataGuard 备库,如果主库误删数据,可用备库闪回至删除点之前,获取丢失数据,然后再自动同步回来!...注意: 主库不建议开启闪回,首先影响性能,其次主库不可能为了某些数据去做闪回,所以很鸡肋! 那么,DataGuard 备库如何开启数据库闪回?...需要有充足的磁盘空间 1、第一步,关闭 DataGuard 备库同步进程 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 2、第二步,开启闪回功能.../oradata/fast_recovery_area 需要物理真是存在,设置的闪回区大小即闪回日志占用磁盘空间的上限!...一段时间,确认 100G 空间能够保留多久的闪回日志,大致推算出需要保存固定时间闪回日志的空间,根据实际情况进行修改! ----
使用FLASHBACK TABLE语句从撤消段中(undo segment)读取该表的过去映像,并利用Oracle9i中引入的回闪查询重建表行。UNDO_RETENTION给出了闪回支持的最小时间。...也就是说,FLASHBACK最少可以支持UNDO_RETENTION给出的时间,如果系统比较闲,则可以闪回更长的时间。...(当然,如果回滚表空间的空间分配不足,当系统处于忙时,有可能重用还没有达到UNDO_RETENTION时间限制的数据的空间)。使用闪回的一个前提是表不能进行DDL操作。...不但不能对DDL操作进行回闪,而且,也无法闪回到DDL操作以前的数据了。...一.delete误删 方法1:如果表结构没有改变,直接闪回整个表,具体步骤: --首先需要表闪回权限,开启行移动功能 alter table 表名 enable row movement; --执行闪回恢复表数据到某个时间点
背景 openGauss闪回功能能够有选择性的高效撤销一个已提交事务的影响,从人为错误中恢复。在采用闪回技术之前,只能通过备份恢复、PITR等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。...采用闪回技术后,恢复已提交的数据库修改前的数据,只需要秒级,而且恢复时间和数据库大小无关。适用于: 1)误删除表的场景; 2)需要将表中的数据恢复到指定时间点或者CSN。...闪回支持两种恢复模式: 基于MVCC多版本的数据恢复:适用于误删除、误更新、误插入数据的查询和恢复,用户通过配置旧版本保留时间,并执行相应的查询或恢复命令,查询或恢复到指定的时间点或CSN点。...后来查看管理员指南,在特性描述倒是说了“ASTORE引擎暂不支持闪回功能。备机不支持闪回操作。”在开发者指南 CREATE TABLE部分找到这么一句话。...想测试该特性的小伙伴还是小心这个点。)
简介: 上篇推文 笔者介绍了如何用开源工具来闪回binlog,但有时候我们的机器无法安装这些开源工具。这时候我们可以使用shell脚本来闪回binlog,是不是觉得方便多了。...条件: 1.mysql binlog必须存在且是row格式的 2.反向生成的表必须有主键 3.表结构不能有更改 1.shell脚本闪回: # 脚本 del_time_recovery.sh(根据起止 time...恢复)用于回滚delete操作: #!...:00" -e "2017-11-02 19:20:00" -d test_db -t test_tb 即可调用 # 脚本 update_time_recovery.sh(根据起止 time恢复)用于回滚...如果想基于position进行闪回 可以自行修改下脚本 也是可以实现的。当然与开源工具相比 功能并不是那么齐全 不过临时用下也是极好的。
领取专属 10元无门槛券
手把手带您无忧上云