TICDC同步数据问题讨论

【 TiDB 使用环境】生产环境
【 TiDB 版本】v4.0.9
【遇到的问题:问题现象及影响】
场景:上游tidb 有数据库 db1, db2, 新建下游tidb数据库,先用br备份db1数据,再用br备份db2数据。
br restore恢复db1/db2数据到下游戏tidb数据库。
问题: 上游tidb在用ticdc同步数据到下游tidb时,指定从 db 1 的备份BackupTS开始同步(没有指定数据库)。 这样操作可以吗? 能成功还是会报错?
备份db1和db2这之间是有时间间隔的(就是会有新数据产生,如果从db1的BackupTS开始同步,那db2有部分数据是会重复写入吗?还是会直接报错)

就你的问题个人感觉

  1. 这样操作可以吗?
    可以,ticdc只是根据当前 tso 来抓取变更的工具(只要 tso 没有被 gc 掉)

  2. 能成功还是会报错?
    个人感觉会成功,但不久后,ticdc 在同步 db2 的增量数据时,会有对已备份的db2中的数据发生冲突,导致 ticdc 的任务停止

针对如上场景有两种方案可以参考:

  1. 用 br 备份 db1 和 db2,获得统一的 tso (前提是在同一实例下)
  2. 如果不在同一实例,需要启动两个 ticdc,分别同步 db1 与 db2
1 个赞

好的,感谢回复

2中的冲突报错,导致任务停止,这个能确定吗?

是在同一个实例上,但库比较多,数据量大,再重新备份恢复。比较浪费时间,所以才想试试这样能不能行,如果冲突能只是提醒,或者覆盖数据,继续进行那就省事了~~

对于有主见的表,ticdc 我记得插入是 replace into,对于无主键的表有可能冲突

1 个赞

好的。明白了

如果我现在这几个库,分别建一个cdc task去同步, 数据源和目的地址都相同,这几个task 会不会互相之间有啥影响 呀?

https://docs.pingcap.com/zh/tidb/v4.0/manage-ticdc#同步任务配置文件描述
我们版本比较老v4.0.9 ,这个配置文件有没有需要特别注意的配置呀?

理论不会影响

1 个赞

好的谢谢~

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。