TiDB要先全量后续实时同步到StarRocks的方案有推荐的吗?

目前有从TiCDC同步到Kafka再到StarRocks,但该链路问题不少,比如Kafka Connector任务遇上写入超时或其他原因后异常中断等问题……
FlinkCDC直接同步到StarRocks的话,有其他小组在做,但好像也遇到了同步瓶颈之类的。

1 个赞

从 kafka 在 通过cdc 到 starrocks 会是比较好的选择,除了kafka,还可以用 nfs,S3等等方式了

全量数据通过 DS 或者外表挂载的形式,手动操作吧

推荐使用 TiCDC + Kafka + StarRocks** 或 Flink CDC 直接同步到 StarRocks的方案,前者解耦灵活但需优化Kafka链路稳定性,后者架构简洁但需解决同步性能瓶颈。

使用的TiCDC → Kafka → StarRocks方式吧

方案 核心链路 延迟 全量 + 增量 运维复杂度 适用场景
Flink CDC 直连 TiDB → Flink CDC → StarRocks 秒级 自动衔接 中小规模、需要灵活 ETL、技术可控
TiCDC + Kafka + StarRocks TiDB → TiCDC → Kafka → StarRocks Routine Load 秒级 需手动衔接 大规模、高可用、解耦、多下游复用
CloudCanal 可视化 TiDB → CloudCanal → StarRocks 秒级 一键全量 + 增量 快速落地、非技术人员、少开发
1 个赞

这个情况好像只能考虑tiCDC工具了吧

如果你要稳定、少维护、不炸链路

TiCDC → Kafka → StarRocks(用 StarRocks 自带 Kafka Consumer) > FlinkCDC

如果你要低延迟、强一致性、多表合并、多表聚合

FlinkCDC → StarRocks 更强,但必须调优,否则必瓶颈

一、推荐方案:TiCDC + Kafka + StarRocks Routine Load(最常见)

这是目前比较主流、稳定的实时同步架构。

架构

TiDB

│ TiCDC

Kafka

│ Routine Load

StarRocks

步骤

  1. 全量同步
  • 使用 Dumpling + Loader
  • 或直接用 DataX / Seatunnel / Spark 导入 StarRocks
  1. 实时增量
  • TiCDC 订阅 TiDB binlog
  • 输出到 Kafka
  • StarRocks Routine Load 实时消费

TiCDC 配置示例

sink 到 Kafka

cdc cli changefeed create
–server=http://127.0.0.1:8300
–sink-uri=“kafka://kafka1:9092/kafka_test?protocol=open-protocol”


StarRocks Routine Load

CREATE ROUTINE LOAD db1.job1
ON table1
COLUMNS(…)
PROPERTIES
(
“desired_concurrent_number”=“3”
)
FROM KAFKA
(
“kafka_broker_list”=“kafka1:9092”,
“kafka_topic”=“kafka_test”
);


优点

  • 实时性:秒级
  • 稳定性:生产大量案例
  • TiDB 官方 CDC 支持
  • StarRocks 原生 Kafka Load

缺点

  • 架构组件多(Kafka)
1 个赞

详细啊,周末学习

推荐方案:TiCDC 直接 Sink StarRocks(较新方案)

有些公司在用 TiCDC → HTTP Sink → StarRocks Stream Load

架构:

TiDB

TiCDC

HTTP Sink

Stream Load

StarRocks

但缺点:

需要自己写 sink

容错不如 Kafka

一般 不建议生产直接用。

三、离线+实时一体:SeaTunnel(推荐度高)

Apache SeaTunnel 支持:

TiDB Source

StarRocks Sink

CDC

架构:

TiDB

SeaTunnel

StarRocks

示例:

source {
TiDB-CDC {
hostname=“tidb”
port=4000
}
}

sink {
StarRocks {
jdbc-url=“jdbc:mysql://fe:9030”
}
}

seatunnel可以直接抽取tidb吗

StarRocks Routine Load这个是starrocks的工具吗

先手动全量+TiCDC增量,TiCDC的下游可以选择消息队列