同一个tidb实例的,非同database的2张表同步,除了用cdc来做以外还有其他方式吗?

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:4.0.2
  • 【问题描述】:同一个tidb实例的,非同database的2张表同步,除了用cdc来做以外还有其他方式吗?

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

辛苦在说明下是什么需求。

与 cdc 类似的同步工具为 tidb binlog 可以看下

需求就是我们需要database A的部份表,同步到同一个实例的database B里面提供给BI部门做查询,这样做是为了防止BI部门的高频率查询,影响线上业务。

tidb binlog 可以将上游 A 同步到下游 A,目前无法对 db 进行路由。

再请问下我现在用cdc来同步的话配置如下
需要同步A.a,B.b,到C.a,C.b
配置如下( test.toml)


case-sensitive = true

[filter]

rules = ['A.a','B.b']

[mounter]

worker-num = 16

[sink]
protocol = "default"

添加CDC任务格式为

./.tiup/bin/tiup cdc cli changefeed create --sink-uri="mysql://root:root@127.0.0.1:3390/C?worker-count=16&max-txn-row=5000" --config=/home/tidb/test.toml

有什么问题吗?

先确认一下你的问题?

你是只有一套 TiDB 集群(不是上下游两套集群),想把它里面的 A.a,B.b 复现到同集群的 C.a,C.b 吗?

是的只有一套Tidb

这种用法目前 TiCDC 暂时还不支持,主要还是因为它还不支持 route 路由改 库名/表名。

假如后续如果支持了库/表名路由,则可以配合 TiCDC 的环形复制来达到。

你现在这个业务场景是想分离读写,所以不能接受 视图/view 对吧?

另外,如果确实想要这种支持,可以去 TiCDC 的 GitHub repo 上提交 Feature Request,如果评审通过则会在后续支持该功能。

我们主要是想避免业务和我们大数据分析在同时查同一张表的时候对前端用户带来影响,所以视图方式应该最终还是会产生对原始表的锁吧?

我们对表只有查询的需求,这是想把业务和数据分析的互相影响去除

这个 view 应该确实不合适。目前暂时没有相关工具来直接支持这需求。

能搭建从集群来用 TiCDC 同步这些表吗?