使用ticdc如何进行全量+增量同步?

1.问题:使用什么方式进行全量同步?
答:

  • 基量数据如果不大,比如在 GB级别,可以使用 dumpling 并发导出工具导出,lightning 物理或逻辑导入方式写入下游集群。
  • 基量数据如果在 TB级别,建议使用 BR工具进行物理备份,并且在下游使用 BR 物理恢复。这里需要用到 S3 作为外部存储,需求提前申请和准备好。

2.问题:怎么确定增量同步的start-ts的值?
答:

  • 如果使用的是BR工具备份,那么在它备份元数据或者输出日志里,会有一个BackupTS,这个时间戳表示物理备份的最后时刻。你搭建同步任务的时候,可以以这个时间戳加1为起点,配置同步任务即可。
  • 如果你用的是 dumpling 工具导出数据,在导出的数据目录里会有一个 metadata 文件,里面会记录导出数据的TSO,可以以它加1作为start-ts的值。

3.问题:start-ts值小了,就会有重复记录,如果大了,就会遗漏数据。
答:其实TiCDC同步数据时可重入的,只要你的表有唯一键(主键或者普通唯一键),那么在遇到相同的数据时,会用最新的去覆盖它。TiCDC是通过 safe_mode 来控制这个行为,比如遇到相同数据时会把insert或update转为replace语句,实现可重入操作。
所以,如果你的start-ts的值是小了,不会造成重复记录(前提表要有唯一键);start-ts的值大了,确实会丢数据。

所以,只要start-ts的值小于等于你导出数据的快照时间戳,即可正常搭建同步流。

1 个赞