关于数据库:5分钟搞定ORACLE到ClickHouse数据迁移同步CloudCanal实战

33次阅读

共计 1883 个字符,预计需要花费 5 分钟才能阅读完成。

简述

ClickHouse 是一种风行的列式数据库,对于计算 uv、mv、pv 等聚合类数据相当敌对,所以宽泛应用于各类报表场景。

本文次要介绍如何应用 CloudCanal 疾速构建一条稳固高效运行的 ORACLE 到 ClickHouse 数据同步链路。
示例中 ORACLE 库为 PDB 模式, ClickHouse 为单正本实例。

技术点

ORACLE 源端增量同步技术

CloudCanal 对于 ORACLE 源端增量同步采纳 LogMiner 剖析 redo 日志或物化视图 / 类 trigger 形式进行。
对于前者,咱们采纳了多种优化形式,将 ORACLE 源端增量同步做到精确、稳固、性能几个方面的均衡,这些技术包含:

  • 采纳 LogMiner 最规范的形式 (ADD_FILE) 作为默认解析形式,同时辅以 CONTINUOUS_MINE作为补充(有 ORACLE 版本限度)
  • 采纳全事件生产模式保障 ORACLE 稳固
  • 反对本地存储以缓存超大变更数据,并采纳手动指定序列化 / 反序列化器让数据存取更牢靠
  • 采纳更加全面的 redo SQL 解析器晋升解析准确性
  • 反对事件合并,批量交付对端写入,大幅晋升数据写入性能
  • 反对 DDL 同步(局部链路),局部缩小数据同步链路运维压力
  • 反对位点回拉,让数据生产谬误有机会得以补救
  • 反对全量数据校验,让数据品质失去更好的监测
  • 反对工作编辑,让长周期运行的数据同步工作更平滑地应答同步对象的变动
  • 增强的监控指标,让同步状态更加明了
  • 放大的数据库权限,让危险进一步放大

围绕 ORACLE 数据库的周边生态,咱们心愿可能做到 GoldenGate 一样弱小甚至超出,相干产品技术一直迭代演进。

ClickHouse 高性能写入

CloudCanal 对于 ClickHouse 高性能写入技术,次要 联合列存的特点 常见业务场景流量特点 用户应用和了解的便利性 3 方面进行抉择与均衡。

列存绝对行存的特点:

  • 列的批量读取效率高,磁盘 IO 绝对小
  • 列存数据块因类型类似,压缩效率好,可应用的计算指令和形式更多

常见业务场景流量特点:

  • insert 和 update 比例高于 delete, 偏差剖析统计的日志类数据 insert 比例远高于后两者
  • 要求高并发的业务,数据读取更新往往只在几个列上
  • 偏差经营用户的交互式数据分析更多在最近写入的数据上

用户应用和了解便利性:

  • 不保护额定的字段,比方版本、是否删除等
  • 性能和实时一致性可抉择,让用户有路可走
  • 抉择 ClickHouse 支流表引擎,避免将来版本 deprecated

针对上述 3 个方面的特点,咱们采纳了以下一些技术达成均衡

  • insert/update 走 APPEND 形式(批量写入),delete 走 ALTER TABLE,性能好,但须要 OPTIMIZE 或查问带 FINAL
  • 完全一致通过自定义代码拆分 update 为 delete 和 insert 达成,但性能升高
  • 默认采纳 ReplacingMergeTree 达成数据去重
  • 反对并行批量写入(但更简单些)

操作示例

前置条件

  • 登入 CloudCanal SaaS 版, 应用参见疾速上手文档
  • 筹备一个 ORACLE 数据库,和 ClickHouse 实例(本例别离应用自建 Oracle 19c 和阿里云 ClickHouse 21.8)
  • ORACLE 账号权限配置
  • 登录 CloudCanal 平台,别离增加

  • ORACLE 采纳 PDB 形式增加

工作创立

  • 工作治理 -> 工作创立
  • 测试链接 并抉择 指标 数据库
  • 点击下一步

  • 抉择 数据同步 ,并勾选 全量数据初始化, 其余选项默认

  • 抉择须要迁徙同步的表,指标映射规定可抉择 与源端统一 转小写

  • 抉择须要迁徙同步的列,指标映射规定可抉择 与源端统一 转小写

  • 确认创立工作

  • 工作主动做 构造迁徙 全量迁徙 增量同步

    校验数据

  • 程序往源端 ORACLE 造数据,I:U:D 比值为 15:83:2

  • 工作失常运行一段时间后,进行造数据
  • 点击 ORACLE -> ClickHouse 工作 详情 更多 > 创立类似工作 ,第二步抉择 数据校验

  • 数据校验 OK

常见问题

是否反对分布式版本的 ClickHouse?

临时不反对分布式版本的 ClickHouse,次要工作量在于产品化构造迁徙、增量同步 DDL、数据写入等方面的变动。

如果不要 append 模式而采纳强统一模式写入 ClickHouse 怎么办?

能够采纳自定义代码将 update 拆分为 delete 和 insert,实现实时统一的成果,然而 update 较多时,性能较差。

反对什么版本的 ORACLE?

目前反对 11g,12c,19c, CDB 或 PDB 类型数据库皆可应用 CloudCanal 进行迁徙同步。

总结

本文简略介绍了如何应用 CloudCanal  进行 ORACLE -> ClickHouse 数据迁徙同步。各位读者敌人,如果你感觉还不错,请点赞、评论加转发吧。

正文完
 0