PCTA-TiDB4.0-3.5 增量同步工具 TiCDC-2班@王燕辉

课程名称:课程版本(101/201/301)+ 课程名称

学习时长:1H

课程收获:

使用TiCDC 数据迁移工具,将 TiDB 数据同步到其他数据系统

课程内容:

  • TiCDC简介
    • TiCDC是什么
      • CDC = Change Data Capture
      • 一个将TiDB中的增量数据实时同步到其他系统的工具
    • 架构
    • 特性
      • 高可用
        • TiKV是数据源
        • 自动failover
      • 高性能
        • 同步时延大约3秒
      • 丰富的生态系统
        • 支持MySQL兼容的数据库
        • 支持Kafka(Avrogeshi/Canal格式/Maxwell格式)
        • 支持Pulsar
      • 环形同步
  • 部署TiCDC
  • 创建同步任务
    • 同步任务在TiCDC中成为changefeed
    • cdc cli
      • 管理TiCDC集群和changefeed
      • 通过cdc cli changefeed命令创建同步任务
      • 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
  • 环形同步
    • 什么是环形同步
    • 使用
      • 创建环形同步使用的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
  • 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