TiCDC介绍

TiCDC 通过拉取TiKV变更日志,实现TiDB增量数据同步工具,具有将数据还原到与上游任意时刻一致状态的能力;同时提供开放数据协议的能力,可以支持其他系统订阅数据变更;

TiCDC特性

  • 高可用性: 可以多节点,互不干扰,如果某个节点故障,可以自动故障转移;
  • 性能:        一般3s内;
  • 支持丰富的下游格式:     兼容MySQL格式的任何DB;

TiCDC架构和原理

  • TiDB接收SQL, TiKV的各个节点变更后,只输出自己本节点的修改日志给TiCDC Cluster集群
  • TiCDC 节点负责接收到TiKV的日志,并在内部逻辑拼接在一起;
  • 多个Capture组成一个集群,某个Capture负责拉取一部分TiKV日志,并与其他Capture协同,将收到的日志聚集到某个Capture Owner,进而发送给下游;
  • 如果一个Capure故障,将会将owner自动转移到其他Capture,进而继续拼装所有的变更日志,输出到下游

TiCDC 适用场景

适合数据源(上游数据库)为TiCDC, 目标数据库(下游数据库)为类MySQL数据库和Kafka; 同时TiCDC Open Protocol是一种行级别的数据变更通知协议,可以为监控、缓存、全文索引、分析引擎、异构数据库的主从复制等提供数据源; 

TiCDC配置要求

生产环境: 16c/64G/SSD/万兆网卡/>2节点/ >Centos 7.3

部署

安装tidb集群的时候如果没有安装,则可以通过scale-out的方式进行安装;

vim scale-out.yaml

cdc_servers:
  - host: XX.XX.XX.XX
    port: 8300
    deploy_dir: "/export/servers/TiDB/ticdc-8300/"
    log_dir: "/export/servers/TiDB/ticdc-8300/log"
  - host: XX.XX.XX.XX
    port: 8300
    deploy_dir: "/export/servers/TiDB/ticdc-8300/"
    log_dir: "/export/servers/TiDB/ticdc-8300/log"

扩容命令: tiup cluster scale-out cluster-default scale-out.yaml 

cdc管理工具安装:  tiup install cdc

版本查看

TiCDC]# tiup cdc version
Starting component `cdc`: /root/.tiup/components/cdc/v5.3.0/cdc version
Release Version: v5.3.0
Git Commit Hash: 20626babf21fc381d4364646c40dd84598533d66
Git Branch: heads/refs/tags/v5.3.0
UTC Build Time: 2021-11-22 10:37:02
Go Version: go version go1.16.4 linux/amd64
Failpoint Build: false

创建任务

tiup cdc cli changefeed create --pd=${pd_address}:2379 --sink-url="mysql://rooot@123456@127.0.0.1:3306" -changefeed-id="cdc-task1"
  • --pd : 通过PD可以获取到TiKV的元数据信息;
  • --sink-url :下游的数据库地址连接串
  • --changefeed-id: 同步任务id,如果不指定,ticdc会自动生成一个UUID;
  • --start-ts: 指定changefeed开始的TSO;省略则从执行时间开始;
  • --target-ts: 指定目标TSO;指定后,截止到目标时间则停止同步; 省略则会一直同步;

 其他相关参数

下游为MySQL/TiDB
worker-count: 下游执行的并发度
max-txn-row:  执行sql的batch大小

下游为Kafka
protocol: 输出到kafka消息协议,可选default、canal、 avro、 maxwell;
max-message-bytes: 每次向Kafka broker发送消息的最大数据量,默认64MB

任务查询

cdc cli changefeed list --pd=http://${pd_ip}:2379  

可以指定多个PD节点

cdc cli changefeed query -s --pd=http://${pd}:2379 --changefeed-id=${task-name}

暂停/恢复/删除同步任务

cdc cli changefeed pause/resume/remove  --pd=http://${pd}:2379 --changefeed-id=${task-name}
 

更新TiCDC同步任务配置
暂停 --> 修改配置 --> 恢复任务

cdc cli changefeed pause -C test-cf --pd=http://${pd}:2379
cdc cli changefeed update ...
cdc cli changefeed resume ..

.TiCDC 限制

  • 有效索引:必须要有主键,或者非空/非虚拟生成列的唯一索引;
  • 暂不支持单独使用RawKV的TiKV集群;
  • 暂不支持 TiDB 中创建SEQUENCE的DDL操作和SEQUENCE函数
  • 不支持TiKV Hibernate Region
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值