课程名称: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、硬件需求
2、部署集群
两种方式:
A 、将TiCDC部署到已有的TiDB集群中,使用扩容方式部署
tiup cluster scale-out scale-out.yaml
至少需要两个TiCDC,实现故障转移
B、部署在全新的集群
tiup cluster deploy v4.0.7 topology.yaml
三、创建同步任务
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、环形同步介绍
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管理操作