【 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有部分数据是会重复写入吗?还是会直接报错)
就你的问题个人感觉
-
这样操作可以吗?
可以,ticdc只是根据当前 tso 来抓取变更的工具(只要 tso 没有被 gc 掉) -
能成功还是会报错?
个人感觉会成功,但不久后,ticdc 在同步 db2 的增量数据时,会有对已备份的db2中的数据发生冲突,导致 ticdc 的任务停止
针对如上场景有两种方案可以参考:
- 用 br 备份 db1 和 db2,获得统一的 tso (前提是在同一实例下)
- 如果不在同一实例,需要启动两个 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 个赞
好的谢谢~