【TiDB 4.0 PCTA 学习笔记】- 3.5 How to use TiCDC @2班+马志林

课程名称:TiDB 4.0 PCTA 学习笔记】- 3.5 How to use TiCDC (增量同步工具 TiCDC)

学习时长:20m

课程收获:

掌握 TiCDC 数据迁移工具,将 TiDB 数据同步到其他数据系统

课程内容:

一、TiCDC简介
1、什么是 TiCDC
CDC 即 change data capture
ticdc 即 TiDB的实时同步工具,可以将tidb写入的数据实时同步到其他系统,如mysql kafka 等

2、TiCDC架构

3、支持特性
高可用、高性能(延迟一般3s左右)、支持多种下游数据库、环形同步(多个独立tidb间同步同一张表)

二、部署 TiCDC集群
1、硬件需求
%E5%9B%BE%E7%89%87

2、部署集群
两种方式:
A 、将TiCDC部署到已有的TiDB集群中,使用扩容方式部署
tiup cluster scale-out scale-out.yaml
%E5%9B%BE%E7%89%87
至少需要两个TiCDC,实现故障转移

B、部署在全新的集群
tiup cluster deploy v4.0.7 topology.yaml
%E5%9B%BE%E7%89%87

三、创建同步任务
1、cdc cli 管理TiCDC集群
cdc cli changefeed 管理同步任务
创建同步任务
cdc cli changefeed create --pd=http://127.0.0.1:2379 --sink-uri= “rnysql://root:123456@127.0.0.1:3306/”
查看同步任务状态
cdc cli changefeed list --pd=http://127.0.0.1:2379

2、下游数据库参数配置详解
cdc cli changefeed create --pd=http://127.0.0.1:2379
–sink-uri=“rnysql://root:123456@127.0.0.1:3306/?work-conut=168&max-txn-row=5000”
cdc cli changefeed create --pd=http://127.0.0.1:2379
–sink-uri=“kafka: / /127.0.0.1: 9092/cdc-test”
cdc cli changefeed create --pd=http://127.0.0.1:2379
–sink-uri=“kafka://127.0.0.1:9092/ cdc-test?protocol=canal”

3、同步要求
数据表需要有主键 或者是唯一索引 ,需要至少有一个唯一索引为not null
不支持场景:单独使用tikv的集群、创建sequence的函数和DDL操作(支持DML)、TiKV Hibernate Region

四、环形同步功能
1、环形同步介绍
%E5%9B%BE%E7%89%87

2、配置环形同步
A、创建 mark table 用于 追踪来源
需要在每个集群上分别执行
cdc cli changefeed cyclic create-marktables .cyclic-upstream-dsn=“root@tcp(${(TIDB_A_HOST}:${(TIDB_A_PORT})/”- -pd=“http://S[PD_A_HOST] : ${PD_A_PORT]”
cdc cli changefeed cyclic create-marktables .cyclic-upstream-dsn=“root@tcp(${(TIDB_B_HOST}:${(TIDB_B_PORT})/”- -pd=“http://S[PD_B_HOST] : ${PD_B_PORT]”
cdc cli changefeed cyclic create-marktables .cyclic-upstream-dsn=“root@tcp(${(TIDB_C_HOST}:${(TIDB_C_PORT})/”- -pd=“http://S[PD_C_HOST] : ${PD_C_PORT]”

B、创建环形任务
三个集群都可以作为DML入口,但DDL入口只能是A
cdc cli changefeed create .-sink-uri="mysql://rootS(TiDB_B_HOST)/”–pd=“http://$(PD_A_HOST):$(PD_A_ PORT)” --cyclic-replica-id 1 --cyelic-filter-replica-ids 2 --cyclic-sync-ddl true
cdc cli changefeed create .-sink-uri="mysql://rootS(TiDB_C_HOST)/”–pd=“http://$(PD_B_HOST):$(PD_B_ PORT)” --cyclic-replica-id 2 --cyelic-filter-replica-ids 3 --cyclic-sync-ddl true
cdc cli changefeed create .-sink-uri="mysql://rootS(TiDB_A_HOST)/”–pd=“http://$(PD_C_HOST):$(PD_C_ PORT)” --cyclic-replica-id 3 --cyelic-filter-replica-ids 1 --cyclic-sync-ddl false
为了避免DDL 环形同步,禁止C再向A同步,–cyclic-sync-ddl false

五、TiCDC管理操作


同学你好,感谢参与 TiDB 4.0 课程的学习!

本篇笔记逻辑清晰、内容丰富,被评选为优质笔记,将额外获得 20 积分,并在 「TiDB 培训」分类下获得“置顶”权益,积分兑换规则将于近期开放,敬请关注!

期待您继续产出优质内容!

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