【TiDB 4.0 PCTA 学习笔记】- 3.5 How to use TiCDC (增量同步工具 TiCDC) @1班:魔幻之翼

课程名称:课程版本(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 指令