5分钟搞定MySQL/PostgreSQL/Oracle到StarRocks数据迁移同步-CloudCanal实战
2022/1/16 8:03:45
本文主要是介绍5分钟搞定MySQL/PostgreSQL/Oracle到StarRocks数据迁移同步-CloudCanal实战,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
简述
CloudCanal 2.1.0.x 版本开始支持 StarRocks 作为对端的数据迁移同步能力
本文通过 MySQL->StarRocks 的数据迁移同步案例简要介绍这个源端的能力。链路特点
- 结构迁移、全量迁移、增量同步(数据)、数据校验俱全
- 流程全自动化
使用须知
- 支持的StarRocks版本为: 1.18.x、1.19.x、2.0.x
- 支持的源端数据源类型为: Oracle/PostgreSQL/Greenplum/MySQL本文主要以 MySQL 源端为例说明使用方法。
- 校验任务只支持主键模型的 StarRocks 表源端表需要有主键
技术点
基于 StreamLoad 的导入方式
StarRocks 提供了多种导入方式。CloudCanal 采用了 StreamLoad 的方式进行导入源端的消息会转成字节流通过 HTTP 协议发往 StarRocks。
相比直接通过 SQL 写入的方式StreamLoad 方式会有更好的性能写入的数据直接经 FE 转发给 BE 处理。如果直接采用 SQL 写入在 FE 侧会有额外的 SQL 解析开销。
tips: CloudCanal默认采用 \u0001、\u0003作为 StreamLoad 导入的列分隔符和行分隔符。
丰富的配置
CloudCanal 提供了 StreamLoad 可配置的丰富参数包括
- connectionTimeoutSec 参数
- 表示导入请求的超时时间(单位秒)
- loadExecMemLimitMb 参数
- 表示导入内存限制
- timezone 参数
- 默认东八区指定导入所使用的时区
- 该参数会影响所有导入涉及的和时区有关的函数结果。
可配置的写入停顿控制
过快的写入会导致 StarRocks 来不及 compaction从而产生异常。CloudCanal 提供了两个任务参数支持在一批数据写入后自动停顿一段时间避免这种问题。参数为
- fullBatchWaitTimeMs 参数
- 全量批之间写入停顿间隔单位毫秒默认 10ms
- increBatchWaitTimeMs 参数
- 增量批之间写入停顿间隔单位毫秒默认 100ms
CloudCanal 任务详情页点击 参数修改即可调整
主键模型
StarRocks 作为实时数仓采用主键模型或者聚合模型较多。CloudCanal默认采用主键模型能够实时同步源端的 INSERT/UPDATE/DELETE。
tips: 表结构对于实时数仓实际读写性能影响非常大CloudCanal 默认提供的结构迁移能力并没有提供诸如分区、分桶等设置用户如需使用可按照需求提前创建好表结构再通过 CloudCanal 进行数据迁移同步。
UPDATE/DELETE 操作的处理
基于 StreamLoad 的写入方式实际写入对端的操作均为 INSERT。CloudCanal 同步时会自动将 UPDATE/DELETE 转成INSERT语句并修改 __ops 值StarRocks 会自动进行compaction。
转义支持
StarRocks 不支持 \n 等特殊符号写入CloudCanal 任务通过参数设置(enableEscape参数) 开启自动转义。
操作示例
- CloudCanal 社区版部署,参见 社区版安装文档
- 准备好源端和目标端数据库以及对应的测试数据
添加数据源
-
登录 CloudCanal 平台
-
数据源管理->新增数据源
-
选择自建数据库中StarRocks
-
Client地址 为StarRocks提供给MySQL Client的服务端口CloudCanal主要用其查询库表的元数据信息
-
Http地址 Http地址主要用于接收stream load的http请求
任务创建
-
任务管理->任务创建
-
选择 源 和 目标 数据库
-
点击 下一步
-
选择 增量同步并且启用 全量数据初始化
-
不勾选 DDL 同步(暂不支持)
-
点击下一步
-
选择订阅的表结构迁移自动创建的表为主键模型的表因此暂不支持无主键表
-
点击下一步
-
配置列映射
-
点击下一步
-
创建任务
-
查看任务状态。任务创建后会自动完成结构迁移、全量、增量阶段。
任务性能调优(option)
对于高流量的场景建议使用 4G 及以上的任务规格配置并且对相关参数进行调优调优建立在任务无 GC 问题、对端 StarRocks 没有 compaction 瓶颈的情况下。
- 任务详情->功能列表->参数设置
- 全量迁移参数调整
- 增量同步参数调整
总结
本文简单介绍了如何使用 CloudCanal 进行MySQL到StarRocks 的数据迁移同步。各位读者朋友如果你觉得还不错请点赞、评论加转发吧。
常见FAQ
默认任务参数配置下如果导入数据过于频繁可能会任务异常这时候可以调节上文提到的fullBatchWaitTimeMs和increBatchWaitTimeMs参数或者调整StarRocks的Server侧的合并策略。下图为StarRocks官方提供的常见问题FAQ
这篇关于5分钟搞定MySQL/PostgreSQL/Oracle到StarRocks数据迁移同步-CloudCanal实战的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程