课程名称:课程版本(301)+ 3.5 How to use TiCDC (增量同步工具 TiCDC)
学习时长:
17 分钟
课程收获:
掌握 TICDC 的原理和配置方式
了解到普通同步和环形同步的区别
课程内容:
- TICDC介绍
- 部署 TICDC 集群
- 创建复制任务
- 使用TICDC 的环形同步功能
- TICDC 管理操作
TICDC 的架构
图中描述了主要的数据流向和TICDC 起到的作用
主要特性
- 高可用
- 数据高可用
- 自动故障转移
- 高性能
- 复制信息 只需要3秒
- 支持多种系统
- 兼容Mysql 协议的数据库
- 支持kafka ,Avro 格式 / Canal 格式/ MaxWell 格式
- 支持Pulsar
- 环形同步
- 支持多个独立的TIDB集群种,同步同一个数据表
TICDC 软件和硬件要求
TICDC 支持 tiup
有两种方式
将ICDC 部署在已有的 TIDB 集群,通过 tiup 扩容的方式进行配置
tiup cluster scale-out scale-out.yaml
cdc_server:
- host: 192.168.1.100
port: 9000
deploy_dir: “/home/tidb-deploy/cdc-9000”
log_dir: “/home/tidb-deploy/cdc-9000/log”
- host: 192.168.1.101
port: 9000
deploy_dir: “/home/tidb-deploy/cdc-9000”
log_dir: “/home/tidb-deploy/cdc-9000/log”
至少需要两个 TICDC 的实例,才能实现故障自动转移的功能
第二种需要在全新集群部署的时候,直接部署TICDC
最小部署
- 1 TIDB
- 3 PD
- 3 TIKV
- 2 TICDC
同步任务
创建同步任务
cdc cli changfeed create --pd=http://127.0.0.1:2369 --sink-url=“mysql://root:testabc@127.0.0.1:3306/”
查询同步任务清单
cdc cli changfeed list --pd=http://127.0.0.1:2379
创建kafka 同步任务,采用 canal 格式
cdc cli changefeed create --pd=http://127.0.0.1:2379 --sink-url = “kafka://127.0.0.1:9092/cdc-sync”
–sink-url = “kafka://127.0.0.1::0902/cdc-sync?protocol=canal”
同步数据注意事项
- 数据表,必须有主键或者唯一索引
- 表只存在唯一索引,唯一索引在表定义种不能是NULL
不支持的场景
- raw
- sequence
- 静默日志功能
环形同步
环形同步的场景描述
准备工作
mark table
参与同步的集群,都需要执行以下的语句
cdc cli changefeed cyclic create-marktables --cyclic-upstream-dsn=“root@tcp(${TIDB_X_Host}:${TIDB_X_PORT})” --pd=“http:”//${PD_X_Host}:${PD_X_PORT}"
其中 X 代表某个集群,实际要对每个集群都要完成以上的操作
创建环形同步任务
该任务规则比较复杂,需要单独进行记录
表达集群之间的同步关系和同步规则,此项需要根据实际的应用场景进行定义
–cyclic-replica-id 集群复制的标识,不能重复
–cyclic-filter-replica-ids 过滤复制标识,对于某个标识不执行同步
–cyclic-sync-ddl 是否同步DDL 指令