课程名称:课程版本(101/201/301)+ 课程名称
学习时长:1H
课程收获:
使用TiCDC 数据迁移工具,将 TiDB 数据同步到其他数据系统
课程内容:
- TiCDC简介
- TiCDC是什么
- CDC = Change Data Capture
- 一个将TiDB中的增量数据实时同步到其他系统的工具
- 架构
- 特性
- 高可用
- TiKV是数据源
- 自动failover
- 高性能
- 同步时延大约3秒
- 丰富的生态系统
- 支持MySQL兼容的数据库
- 支持Kafka(Avrogeshi/Canal格式/Maxwell格式)
- 支持Pulsar
- 环形同步
- 高可用
- TiCDC是什么
- 部署TiCDC
- 软硬件要求
- 两种部署方式
- 部署到已有的TiDB集群
- 通过tiup扩容操作来完成
- tiup cluster scale-out scale-out.yaml
- 可部署任意数量的TiCDC
- 部署到已有的TiDB集群
- 全新部署
- tiup cluster deploy v4.0.7 topology.yaml
- 最小部署
- 1 * TiDB
- 3 * PD
- 3 * TiKV
- 2 * TiCDC
- 软硬件要求
- 创建同步任务
- 同步任务在TiCDC中成为changefeed
- cdc cli
- 管理TiCDC集群和changefeed
- 通过cdc cli changefeed命令创建同步任务
- cdc cli changefeed create --pd=http://127.0.0.1:2379 --sink-uri=“mysql://root:123456@127.0.0.1:3306/”
- cdc cli chagefeed list --pd=http://127.0.0.1:2379
- Kafka Sink
- –sink-uri=“kafka://127.0.0.1:9092/cdc-test”
- Canal格式
- –sink-uri=“kafka://127.0.0.1:9092/cdc-test?protocol=canal”
- 同步的表的限制
- 必须有主键或唯一索引
- 至少又一个唯一索引声明为NOT NULL
- 环形同步
- 什么是环形同步
-
在多个TiDB集群中同步同一个数据库或表
- 使用
- 创建环形同步使用的mark tables
- cdc cli changefeed cyclic create-marktables --cyclic-upstrea-dsn=“root@tcp(${TIDB_A_HOST}:${TIDB_A_PORT})/” --pd=“http://${PD_A_HOST}:${PD_A_PORT}”
- cdc cli changefeed cyclic create-marktables --cyclic-upstrea-dsn=“root@tcp(${TIDB_B_HOST}:${TIDB_B_PORT})/” --pd=“http://${PD_B_HOST}:${PD_B_PORT}”
- cdc cli changefeed cyclic create-marktables --cyclic-upstrea-dsn=“root@tcp(${TIDB_C_HOST}:${TIDB_C_PORT})/” --pd=“http://${PD_C_HOST}:${PD_C_PORT}”
- 创建环形同步任务
-
在TiDB集群A上创建环形同步任务
- cdc cli changefeed create --sink-uri=“mysql://root@${TiDB_B_HOST}/” --pd=“http://${PD_A_HOST}:${PD_A_PORT}” --cyclic-replica-id 1 --cyclic-filter-replica-ids 2 --cyclic-sync-ddl true
-
在TiDB集群B上创建环形同步任务
- –cyclic-replica-id 2 --cyclic-filter-replica-ids 3 --cyclic-sync-ddl true
-
在TiDB集群C上创建环形同步任务
- -cyclic-replica-id 3 --cyclic-filter-replica-ids 1 --cyclic-sync-ddl false
-
–cyclic-replica-id 为上游集群指定replica id
-
–cyclic-filter-replica-ids 指定需要过滤的写入来源id,通常为下游集群id
-
–cyclic-sync-ddl 指定是否同步ddl到下游
-
- 上图中
- 所有集群都接受DML
- 只有A接受DDL
- 为了避免DDL环形同步,禁止了集群C向A同步DDL
- 上图中
-
- 创建环形同步使用的mark tables
- 什么是环形同步
- TiCDC运维
- 暂停任务
- cli cdc changefeed pause --pd=… --changefeed-id xxx
- 恢复任务
- cli cdc changefeed resume --pd=… --changefeed-id xxx
- 删除任务
- cli cdc changefeed remove --pd=… --changefeed-id xxx
- 查询任务列表
- cli cdc changefeed list
- 查询某个任务
- cli cdc changefeed query --pd=xxx --changefeed-id=xxx
- 暂停任务