使用flink cdc同步tidb到doris,如何进行整库同步

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】v8.1.0
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
根据flink cdc文档,是支持整库同步到其他数据库的
但是并没有相关文档,模仿MySQL执行时直接报错了

目前做数据集成是tidb使用ticdc同步到MySQL ,MySQL再使用flink cdc同步到doris,现在想省掉MySQL这个环节,直接使用flink cdc同步到doris

现在如何解决这个问题,flink cdc整库同步tidb,并且ddl也支持同步,一直一直表的建很麻烦

或者有没有其他方案可以直接让tidb的数据同步到doris的
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

有人吗

参考下这个

source:
  type: mysql  # 使用 mysql 类型,因为 TiDB 兼容 MySQL 协议
  hostname: <tidb-hostname>
  port: <tidb-port>
  username: <tidb-username>
  password: <tidb-password>
  tables: <tidb-database>.\.*  # 通过正则匹配同步整个数据库的所有表
  server-id: <server-id-range>
  server-time-zone: UTC

sink:
  type: doris
  fenodes: <doris-frontend-host>:<doris-frontend-port>
  username: <doris-username>
  password: <doris-password>
  table.create.properties.light_schema_change: true
  table.create.properties.replication_num: 1

pipeline:
  name: Sync TiDB Database to Doris
  parallelism: 2
1 个赞

试试这个:

– 创建 TiDB CDC 连接器表
CREATE TABLE tidb_source (
id BIGINT,
name STRING,
age INT,
– 其他字段…
PRIMARY KEY(id) NOT ENFORCED
) WITH (
‘connector’ = ‘tidb-cdc’,
‘hostname’ = ‘tidb_host’, – 替换为你的 TiDB 主机地址
‘port’ = ‘4000’, – 替换为你的 TiDB 端口
‘username’ = ‘tidb_user’, – 替换为你的 TiDB 用户名
‘password’ = ‘tidb_pass’, – 替换为你的 TiDB 密码
‘database-name’ = ‘your_database’, – 替换为你要同步的数据库名称
‘table-name’ = ‘*’ – 使用 * 表示同步整个数据库的所有表
);

– 创建 Doris 目标表
CREATE TABLE doris_sink (
id BIGINT,
name STRING,
age INT,
– 其他字段…
PRIMARY KEY(id) NOT ENFORCED
) WITH (
‘connector’ = ‘doris’,
‘fenodes’ = ‘doris_fe_host:8030’, – 替换为你的 Doris FE 节点地址和端口
‘table.identifier’ = ‘your_database.your_table’, – 替换为 Doris 中的目标表
‘username’ = ‘doris_user’, – 替换为你的 Doris 用户名
‘password’ = ‘doris_pass’, – 替换为你的 Doris 密码
‘sink.properties.format’ = ‘json’, – 数据格式
‘sink.properties.label-prefix’ = ‘flink_cdc_label’ – 标签前缀
);

– 启动数据同步
INSERT INTO doris_sink
SELECT * FROM tidb_source;

1 个赞

不错,到位啊

这个确定能做增量吗?
如果把tidb当作MySQL来做source,增量同步是什么原理,按理来说tidb不像MySQL那样使用binlog来同步增量数据的

我上面那个就是这样做,结果报错 星号*识别不到表名

而且如果上游tidb要是加了一列,是不是flink也得频繁的修改,这个好像更麻烦

:laughing: :laughing: :laughing:

这个问题属于数据集成的需求,应该不冷门吧,没人遇到吗

如何同步数据到doris,应该很多公司有这种业务才对,分析统计类业务

看其他贴子,ticdc也无法直接同步到doris,兼容有问题。。

TIDB 是HTAP架构呀 TiFlash做OLAP统计分析不也是很方便 :smile:

如果数据集成的需求很小,那可以一个tidb集群里直接用tiflash分析
现在是有很多个业务,也很多套集群哦,还有MySQL等其他数据库呢,做分析还是要在同一个分析型数据库里,数仓用ck,doris等等,这个需求肯定要支持的

按照阿里云社区讨论,也是说的乱七八糟的,感觉应该不支持
唉,不知道有什么案例参考

1.flink cdc tidb connector不是pingcap官方维护的开源产品
2.flink cdc tidb connector目前只能为单个表创建flink create table ddl然后再insert into select,不支持正则匹配,你需要的有点像flink catalog的能力,忽略所有DDL创建直接insert,目前应该没有这个能力

用flink cdc也遇到了一些问题,在7以上的版本,貌似flink cdc已经不怎么支持了,遇到一些大表,写入并发高的情况,flink cdc做增量的时候会莫名的不能正常拉取数据了