【TiDB 4.0 PCTA 学习笔记】- 3.5 How to use TiCDC (增量同步工具 TiCDC) @2班+李响

课程名称:3.5 How to use TiCDC (增量同步工具 TiCDC)

学习时长:

40分钟

课程收获:

掌握 TiCDC 数据迁移工具,将 TiDB 数据同步到其他数据系统。

课程内容:

一、了解TICDC

  1. TICDC
    CPC是Chang Data Capture的简称,通常将上游数据库写入数据实时同步到下游数据库中,TiCDC就是为TiDB实现的实时数据同步工具,可以将TiDB中的增量数据实时同步到其他系统。
  2. 架构
  3. 特性
  • 高可用:TiKV是TICDC的数据源,只要TiKV能正常访问,TICDC就可以正常同步数据,自动故障转移
  • 高性能:TICDC直接将TiKV中的增量数据同步,减少了很多开销,延迟一般为3秒
  • 丰富的生态对接
    兼容MySQL数据库;直接以Avro、Canal或Maxwell格式输出至Kafka;支持将数据输出到Pulsar。
  • Cyclic 同步:支持在不同的TiDB数据库同步同一张数据表,最终达到数据一致

二、部署TICDC集群

  1. 软硬件需求
  2. 部署方式

三、创建TICDC同步任务
1.通过CDC CLI管理TICDC集群,TICDC的cdc cli changefeed管理同步任务

  • 创建一个同步任务到下游MySQL中
    $ cdc cli changefeed create --pd=http://127.0.0.1:2379 --sink-uri=“mysql://root:123456@127.0.0.1:3306”
  • 通过changefeed list查看性能同步任务的状态
    $ cdc cli changefeed list --pd=http://127.0.0.1:2379
  • 支持sink uri设置下游MySQL/TiDB的链接参数
    $ cdc cli changefeed create --pd=http://1270.0.1:2379 --sink-url=“mysql://root:123456@127.0.0.1:3306/?worker-count=16&max-txn -row=5000”
  • kafka设置
    $ cdc cli changefeed create --pd=http://127.0.0.1:2379 --sink-uri=“kafka://127.0.0.1:9092/cdc-test”
  • 将变更数据输出为Canal格式
    $ cdc cli changefeed create --pd=http://127.0.0.1:2379 --sink-uri=“kafka://127.0.0.1:9092/cdc-test?protocol=canal”
  • TiCDC对同步数据表的要求
    确保上下游数据最终一致,数据表必须有主键或者唯一索引
    如果表只存在唯一索引,至少有一个唯一索引的表结构中定义NOT NULL
  • TiCDC不支持的场景
    使用Raw KV的TiKV集群
    TiDB中的创建Sequence DDL操作和函数(上游使用Sequence EML操作可以正确同步)
    TiKV 静默Region操作,TICDC会使Region无法进入静默状态

四、使用TICDC的环型同步功能

  1. 环形同步支持在多个TiDB间同步数据,及时三个TiDB同时写也会保证不会出现冗余数据
  2. 创建环形同步前准备工作(三个集群都执行)
  3. 创建环形同步

    注意:DDL操作只能在集群A上执行,为了避免DDL操作环形同步,禁止了C将DDL同步至A操作

五、TiCDC的管理操作

  1. 支持暂停、恢复和删除同步任务
  2. 查看TiCDC同步任务的整体情况和状态

同学你好,感谢参与 TiDB 4.0 课程的学习!

本篇笔记逻辑清晰、内容丰富,被评选为优质笔记,将额外获得 20 积分,并在 「TiDB 培训」分类下获得“置顶”权益,积分兑换规则将于近期开放,敬请关注!

期待您继续产出优质内容!

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。