Oracle 数据迁移同步优化与思考
· 阅读需 15 分钟
为什么我们要重构 Oracle 源端数据同步?
CloudCanal 早期版本即支持了 Oracle 数据库,围绕结构迁移、全量迁移、增量同步三个核心步骤,构建了以 Oracle 数据库为源端的实时数据体系。
但之前的版本,也存在着不少问题,功能、性能、对数据库权限的挑战等方面都有所涉及,是 CloudCanal 产品的一个痛点,看着 MySQL 源端在线数据体系不断狂奔,不免有点落寞。
再者,市场的需求层出不穷,“CloudCanal 能否把 Oracle 数据同步到 Kafka?”CloudCanal 能否把 Oracle 数据同步到 ElasticSearch ?”我们在做业务重构,你们能做 Oracle 到 Oracle 的数据同步么?”...
为此,我们下定决心,决定在春夏之交,给 CloudCanal Oracle 源端动一场大手术。
如何优化?
两种实现方式的选择
最有力的改变往往来自于某一个特定方向的深入挖掘。
对于老版本 Oracle 源端增量实现的物化视图方式(类trigger)和 LogMiner (Redo日志解析) , 我们选择深度优化 LogMiner,理由有三
- LogMiner为 Oracle 官方提供 Redo 日志解析,方式相对可靠
- CloudCanal 实现的 MySQL / PostgreSQL / MongoDB 源端增量都偏向于操作日志解析,风格一致,组件可共用性概率高
- 从业界的调研来看,LogMiner在落地 Oracle 严格 CDC 场景下,表现可圈可点
确定我们核心追求的效果
可持续稳定运行成为我们优化的主要目标,这句话的含义可能并非字面所理解,实际包含以下几个问题的解决
- 能否在突发压力下(5000 条数据/秒)稳定运行?
- 能否在超级大事务下( >1000万条数据数据订正)稳定运行?
- 能否不中断任务
