发布网友 发布时间:2024-10-23 22:07
共1个回答
热心网友 时间:2024-11-09 16:12
CloudCanal 2.1.0.x 版本开始支持 StarRocks 作为目标进行数据迁移同步。
本文以 MySQL 至 StarRocks 的数据迁移同步为例,简要介绍该源端的功能。链路特点包括基于 StreamLoad 的导入方式。
StarRocks 支持多种导入方式,CloudCanal 选择了 StreamLoad 方式,将源端消息转为字节流,通过 HTTP 协议发送到 StarRocks。StreamLoad 方式相比直接 SQL 写入,性能更优,数据直接经 FE 转发至 BE 处理,减少了 FE 侧的 SQL 解析开销。
注意:CloudCanal 默认使用 \u0001、\u0003 作为 StreamLoad 导入的列分隔符和行分隔符。
CloudCanal 提供了丰富的 StreamLoad 可配置参数,包括写入停顿控制等。
为避免 StarRocks 来不及 compaction 导致异常,CloudCanal 提供了两个任务参数,支持一批数据写入后自动停顿一段时间。参数调整可通过 CloudCanal 任务详情页进行。
StarRocks 作为实时数仓,常用主键模型或聚合模型。CloudCanal 默认采用主键模型,可实时同步源端的 INSERT/UPDATE/DELETE 操作。
注意:表结构对实时数仓的读写性能影响很大。CloudCanal 默认的结构迁移能力不包含分区、分桶等设置,用户需根据需求提前创建表结构,再通过 CloudCanal 进行数据迁移同步。
基于 StreamLoad 的写入方式,实际写入操作均为 INSERT。CloudCanal 同步时自动将 UPDATE/DELETE 转换为 INSERT 语句,并修改 __ops 值,StarRocks 会自动进行 compaction。
StarRocks 不支持 \n 等特殊符号写入,CloudCanal 任务通过参数设置(enableEscape参数)开启自动转义。
对于高流量场景,建议使用 4G 及以上任务规格配置,并对相关参数进行调优,确保任务无 GC 问题,对端 StarRocks 无 compaction 瓶颈。
本文介绍了如何使用 CloudCanal 进行 MySQL 至 StarRocks 的数据迁移同步。如觉得内容不错,请点赞、评论、转发。
默认任务参数配置下,导入数据过于频繁可能导致任务异常,可调节 fullBatchWaitTimeMs 和increBatchWaitTimeMs 参数,或调整 StarRocks 服务器侧的合并策略。
更多精彩内容,请参阅:主流数据库到 StarRocks | Glougence