TiDB 已有数据,如何使用 TiCDC 将所有历史数据全部同步到下游 MySQL?

  1. 集群数据非常多吗? 可以考虑在业务低峰期,调整gc 参数,保留更长的时间 ,如果时间太长,同时数据量变化很大,比如有大量删除操作,可能会对业务有影响。https://docs.pingcap.com/zh/tidb/stable/system-variables#tidb_gc_life_time-从-v50-版本开始引入
  2. 如果数据量非常大,或者可以考虑分多个任务? 比如有很多库或者表,不同的任务同步某一部分库表。

TiDB 集群的数据量近 100G 了。目前看来只能在低峰期调整 GC 参数来实现了。
我用过 DM ,DM 就支持 “全量”、“增量”、“全量+增量”等多种模式。不知道为什么 TiCDC 设计上并没有考虑全量的问题,是直接基于“增量(变更)”设计。我个人觉得,捕获变更数据,只要要同步到某个数据库中,至少得有基本的表结构吧,除非主库全新创建,否则增量无法同步这些表结构吧。
感谢解答。

cdc 的定义主要就是捕获变化的数据。 类似于DM 是 dumpling,lightning,sync 组成的各个组件。 目前没有这种集成的工具,所以需要全量备份,导入,再用 TiCDC 同步增量变化的数据。

3 个赞

主要就是增量的起始位置太难找了,如果能像 MySQL 主从复制那样定位也行,可惜不是:joy:
感谢一直耐心解答!

:handshake:

请教下题主,您的问题解决了么?

您好。我这边后来没尝试了,这个方案我们这边放弃了。

全量阶段通过 BR 或者 Dumpling 都会包含全量的起点位置

  • 使用 BR validate 指令获取备份的时间戳,示例如下:
COMMIT_TS=`br validate decode --field="end-version" -s local:///home/tidb/backupdata | tail -n1`
  • 使用 Dumpling 查阅 Dumpling metadata 获取 Pos ( COMMIT_TS )。
cat metadata
Started dump at: 2020-11-10 10:40:19
SHOW MASTER STATUS:
        Log: tidb-binlog
        Pos: 420747102018863124

Finished dump at: 2020-11-10 10:40:20
1 个赞

好的,感谢。后面如果有此需求,我会尝试,或者再开贴请教!:blush:

感谢您的回复。
能否请教下您现在是用的什么方案做主从呢?

你好。
我这边,目前主业务还是 MySQL 数据库,只有分析业务、报表业务等在 TiDB 上。因此,MySQL 是主库,TiDB 是从库(因分析业务需求,需要将所有主业务数据汇聚到一起)。主从方案使用 DM 实现,也就是 MySQL --> DM --> TiDB。

感谢 :pray:

客气啦:blush:

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