欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

TiCDC介绍

时间:2023-04-21

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.yamlcdc_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 versionStarting component `cdc`: /root/.tiup/components/cdc/v5.3.0/cdc versionRelease Version: v5.3.0Git Commit Hash: 20626babf21fc381d4364646c40dd84598533d66Git Branch: heads/refs/tags/v5.3.0UTC Build Time: 2021-11-22 10:37:02Go Version: go version go1.16.4 linux/amd64Failpoint 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

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。