常用的网站建设技术有什么软件,网站建设电子书资料,dw设计软件,安卓市场网站建设简述
CloudCanal 最近再次对其 Oracle 源端数据同步进行了一系列优化#xff0c;这些优化基于用户在真实场景中的反馈#xff0c;具备很强的生产级别参考意义。
本文将简要介绍这些优化项#xff0c;希望带给读者一些收获。
增量事件 SCN 乱序问题MISSING_SCN 事件干扰新…简述
CloudCanal 最近再次对其 Oracle 源端数据同步进行了一系列优化这些优化基于用户在真实场景中的反馈具备很强的生产级别参考意义。
本文将简要介绍这些优化项希望带给读者一些收获。
增量事件 SCN 乱序问题MISSING_SCN 事件干扰新增的归档日志消费模式
优化点
增量事件 SCN 乱序问题
Oracle 源端 Logminer 数据同步原理大致如下
获取所有包含当前 SCN 位点的 Redo 或 Archive 日志文件并添加到 Logminer 中计算本次需要分析的 SCN 范围START_SCN, END_SCNLogminer 对于 SCN 范围进行日志分析分析结果展现在 V$LOGMNR_CONTENTS 视图中扫描 V$LOGMNR_CONTENTS 视图转换处理后同步到目标端 老版本 CloudCanal 扫描 V$LOGMNR_CONTENTS 视图时指定了 SCN 范围进行查询但在实际客户场景中偶发 SCN 乱序问题。
同时 Oracle 官方也建议查询视图时不要进行过多的范围过滤或排序处理以避免查询结果乱序。
因此我们首先 进行了 2 个优化 以此解决该问题
扫描 V$LOGMNR_CONTENTS 视图时直接查询所有记录其 SCN 范围完全依赖于 Logminer 所指定的文件设定 Logminer 分析的步长参数logMiningScnStep控制分析性能
MISSING_SCN 事件干扰
使用 Logminer 分析 Redo 日志时有时会出现 MISSING_SCN 事件老版本 CloudCanal 遇到该事件则会忽略但这会导致事件漏扫从而丢数据。
MISSING_SCN 事件具体意义为
Logminer 分析 Redo 日志时由于日志切换或其他特殊情况导致部分 SCN 事件没有被 Logminer 分析到因此在 V$LOGMNR_CONTENTS 视图中体现为 MISSING_SCN。
因此我们做了 第 3 个优化当遇到 MISSING_SCN 事件时采取一定的策略规避漏扫问题具体动作为:
停止扫描回退当前 SCN根据当前 SCN 重新分析和消费日志文件 重新分析后缺失的 SCN 记录会被 Logminer 分析到并且此类型事件出现频率较小因此对同步效率影响非常小。
归档日志消费模式
Logminer 分析 Redo 日志时如果 END_SCN 与最新 SCN 接近可能会导致部分 SCN 无法被 Logminer 分析从而出现数据丢失。
这种情况难以避免因为很难在 Logminer 层面确定是否有 SCN 被漏掉。
CloudCanal 老版本通过设置 fallBackScnStep 参数与最新的 SCN 保持一定距离这种做法虽牺牲了一部分实时性但换取了数据的准确性而该方式和 只消费归档日志模式 有一定的相似性。
归档日志不会再发生变化从而能够保证 Logminer 分析的准确性对于不太注重实时性的业务比如日报这是一个可接受的方式增量同步的好处不光只是实时性。
CloudCanal 第 4 个优化 即增加了只消费归档日志模式参数archiveLogOnlyMode。
在该模式下, 同步任务会根据 Archive 日志文件 SCN 双位点 的方式以 Archive 生成的时间顺序逐个消费这样可以保证不漏扫任何一个 Archive 文件。 未来展望
优化性能
本次优化侧重于数据的准确性优化了 SCN 乱序问题、MISSING_SCN 问题但部分高并发场景回退 SCN 可能会导致性能下降。
所以优化性能是后续 CloudCanal Oracle 数据同步重要的一个方向。
数据订正能力
Oracle 部署形态多样用户场景不一数据类型复杂在做足事前防范工作之后事后如何补救也是非常重要的能力。
借助 CloudCanal 数据校验订正体系后续丰富和优化 Oracle 源端数据校验和订正能力是一个重要的工作。
总结
本篇文章主要介绍 CloudCanal 对于 Oracle 源端数据同步的深度优化希望对读者有所帮助。