绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
MySQL 的FLASHBACK 数据回滚
2019-05-20 08:49:34

数据库的里面的FLASHBACK 功能是一个让人刮目相看的功能,如果你做错了什么怎么能将那段时间的数据恢复,并且还让生产的应用不停止,这是一个数据库管理员都想拥有的功能, SQL SERVER 需要借助第三方软件的功能,可以完成数据的回滚和恢复,ORACLE 独有的FLASHBACK 功能,以及POSTGRESQL 的pg_dirtyread 功能,都可以从某些方面来进行数据的回滚和数据的找回。


当然基本上如果你对你的表进行了 TRUNCATE TABLE的操作则是不能对数据进行找回的,原理就不多说了。


MYSQL的数据找回和回滚使用的是BINLOG2SQL 这个开源的工具,其中的原理如果你懂得MYSQL的binlog 原理,则你会很快明白其可以恢复数据的方式。


这里我们可以做一个实验:


我们可以建立一个数据库 ttt  ,并在库中建立一个表 ttt ,在表中建立一个字段 create table ttt (id int)


然后我们在数据库中进行相关的操作


插入操作

insert into ttt (id) values (1),(2),(3);


update 操作


update ttt set id = 2 where id = 1;


delete 操作


delete from ttt where id = 2



如果你想产生回滚的语句,直接在 上图语句的后面添加 flushback

大家可以观察上图,通过上图可以理解 BINLOG 语句的记录模式

1  无论你如何插入数据,是批量还是,单条插入,在BINLOG 里面都会逐条解析你插入的记录


2 你UPDATE 或者 DELETE 数据表一条语句多条数据的情况下,也是对每一条数据进行一个数据的记录


一句话所有的记录都是根据行来记录,而不是逻辑语句。


同时这个工具可以根据你的pos ,时间点, 日志的范围等等进行相关数据的提取。


所以有了这个工具,基本上大部分的误操作都能进行数据的找回和恢复。





分享好友

分享这个小栈给你的朋友们,一起进步吧。

数据库杂货铺
创建时间:2021-12-10 09:57:47
分享数据库管理,运维,源代码 ,业界感受, 吐槽
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • liuaustin
    栈主

小栈成员

查看更多
  • miemieMIA
  • 578154454
  • ylfxml
戳我,来吐槽~