续上一篇: 自动化流程:数据找回(一:MySQL数据闪回)
上一篇说的是
- 1.数据找回的作用
- 2.MySQL数据找回自动化流程功能演示
- 3.自动化流程的代码配置
这篇主要介绍Oracle的数据找回自动化流程.
一些改进
- 改进1:Oracle数据找回功能从利用OGG改到用归档日志
- 上一篇的结尾,说Oracle的数据找回.要用到OGG+Kafka的方案.
- 最终经过对比验证,换了更好的Oracle原生归档日志方案
- 改进2:增加了操作类型的筛选项,这样可以针对指定的操作(例如:delete)进行redo和undo
Oracle数据回退功能的方案对比
当尝试做Oracle数据回退功能时有以下几个方案
- Oracle数据闪回功能 ,优:自带的功能,速度快,简单 缺:需要开启闪回段,闪回的时间太短(平均约30分钟内)
- 全备和日志还原,优:30天内数据可回退 ,缺:慢,需要资源大,复杂不利于自动化脚本
- OGG,因为我们的环境大部分重点表都做了OGG到kafka的订阅, 所以可以直接扫描kafka的信息来获取指定表的变更, 优:资源占用少,快,开发难度低 缺: 如果要回退的这张表没有做OGG订阅怎么办?
- 归档日志解析, 优:7天内任意时间点可回退 ,缺: 每次回退的时间段不能太长
我们完成了方案3和方案4的代码开发工作,最终选用了方案4: 归档日志解析
- 脚本化实现难度小
- 7天内任意时间点,能满足90%的业务需求
- 回滚速度快,举个例子:
- 研发提交流程,要求看A数据库里Order表在周三上午10:00-10:30的所有修改动作,提交申请后,大约10秒内就可以完成这个流程.
- 覆盖的范围大,线上/测试/开发 环境的所有库表都支持
- 占用资源少,对线上影响小
Oracle数据回退功能演示
- 在测试环境还原一次全库的历史快照只需要 0.4秒,非常的快速!!!
小结
当数据库有了这个功能以后:
- 研发可以在改错数据的时候,快速提交流程回退数据
- 当有奇怪的线上数据问题时,可以很方便的生成redoSQL,重放过去某个时间段的数据修改
- 数据库有大量写入时,快速的定位是哪张表,什么样的SQL引起的