ticdc 可以同步增量数据至同一集群的另一个schema中吗

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
现在同一集群有A库和B库,A为生产,B为测试,想实时同步A库的数据到B库,可以通过 cdc 处理吗?可以的话配置文件应该怎么写,有文档或者 demo 示例吗。只要增量数据同步到B库就可以。

TiCDC 可以同步增量数据至同一集群的另一个schema中;配置文件和同步到其他下游数据库一样的

是的
[filter]
rules = [‘A.*’]
ignore-txn-start-ts = [0]

[mounter]
worker-num = 16

[sink]
dispatchers = [
{matcher = [‘A.*’], topic = “B.{schema}_{table}”},
]
不知道是不是这样配置就可以了

topic 是写到kafka的 ,不是写类 MySQL 数据库的。问了厂家,cdc 暂时没有route的功能

1 个赞

一样啊,当然可以,只不过上下游是同一个集群罢了

可以看这个链接: 2.1.3 CDC 实操指南 | tidb-in-action

文档上没有说明啊,有实践或测试过吗?

这个也不是说的同一个集群

可以看看我之前提的一样的问题

没有试过同一集群内的同步增量数据,可以在测试环境测试

当然可以

嗯 我直接把 A库的数据用 cdc 抽出来写到 kafka 里,然后用 canal 消费 kafka 中的数据回写到同一集群的另一个 schema 里

是啊,他的要求是同一集群的另外一个schema中 :joy:

如果测试这边对性能要求不高,可以创建个同名视图指向生产的表。如果测试库的代码,查询过程中可以指定库名的话,可以直接给测试的用户授个单独对象的只读权限。
如果上述都不行,现阶段最高效的办法是写个脚本定期import into。

不支持了

没有实际操作过,但查看cdc的配置,对于兼容mysql类(含tidb)的同步,应该不可行。
在changefeed中配置mysql兼容的数据库中(含tidb),其中配置支持表过滤与事件过滤(https://docs.pingcap.com/zh/tidb/stable/ticdc-changefeed-config),但其不提供table_name和schema_name的映射转换的功能。只有sink中可以在filter与sink中配置映射转换。

路由功能cdc目前还不支持,后续可能会开发出来

支持同步ddl,根据ddl然后自己处理一下再处理变更

主要不支持路由功能,所以做不了

ticdc不支持路由功能