课程名称:课程版本(101/201/301)+ 3.5 How to use TiCDC (增量同步工具 TiCDC)
学习时长:20
课程内容:
一、TiCDC
-
CDC是Change Data Capture的缩写,TiCDC是TiDB的变更数据捕获。
-
架构
- 特性
- 高可用
- 数据高可用
- 故障转移
- 高性能
- 丰富的生态对接
- Support MySQL compatible database
- Support Kafka with Avro format/Canal format/Maxwell format
- Support Pulsar
- 环形同步
- 高可用
二、部署TiCDC
-
软硬件需求
-
TIUP 部署
在已有的集群上通过scale-out 部署,新的直接写配置文件
配置
-
创建同步任务
- 创建changefeed
cdc cli changefeed create .-pd=http://127.0.0.1:2379 --sink-uri= “rnysql://root:123456@127.0.0.1:3306/” - changefeed 的状态
cdc cli changefeed list --pd=http://127.0.0.1:2379
- 创建changefeed
-
sink-uri
- mysql
mysql://root:123456@127.0.0.1:3306 - kafka
- kafka
kafka: / /127.0.0.1: 9092/cdc-test - canal
kafka://127.0.0.1:9092/ cdc-test?protocol=canal
- kafka
- mysql
-
注意事项
数据表需要有主键 或者是唯一索引 (需要有一个唯一索引为not null)- 不支持场景:
- 弱kv 的集群
- Sequence ddl 和函数
- TiKV Hibernate Region
https://docs.pingcap.com/tidb/stable/ticdc-overview
https:/docs.pingcap.com/tidb/stable/troubleshoot-ticdc
- 不支持场景:
三、环形同步
-
创建 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 create .-sink-uri="rnysql://rootS(Ti08_B_HoST)/”–pd=“http://$(PD_A_HOST):$(PD_A_ POR7)” --cyclic-replica-id 1 --cyelic-filter-replica-ids 2 --cyclic-sync-ddl true- –cyclic-replica-id : 集群id (类似与mysql 的server id)
- –cyelic-filter-replica-ids : 同步到的下个集群id
- 需要注意最后一个集群 同步回 第一个集群时 需要设置 --cyclic-sync-ddl false
四、 TiCDC Management
-
查看 整体 task 任务 来获取 获取 cdc task id
cdc cli capture list --pd=http://10.0.10.25:2379
-
Pause/Resume/Remove task
- cdc cli changefeed pause --pd=http://10.0.10.25:2379 --changefeed-id 28c43ffc-2316-4f4f-a70b-d1a7c59ba79f
- cdc cli changefeed resune .-pd=http://10.0.10.25:2379 --changefeed-id 28c43ffc-2316-4f4f-a76b-d1a7c59ba79f
- cdc cli changefeed renove --pd=http://10.0.10.25:2379 --changefeed-id 28c43ffc-2316-4f4f-a70b-d1a7c59ba79f
-
查看 指定 任务
cdc cli capture query --pd=http://10.0.10.25:2379 --changefeed-id 28c43ffc-2316-4f4f-a70b-d1a7c59ba79f
学习过程中遇到的问题或延伸思考:
- 问题 1:
- 问题 2:
- 延伸思考 1:
- 延伸思考 2: