tidb的工具——ticdc

一、概述

TiCDC 是一款 TiDB 增量数据同步工具,通过拉取上游 TiKV 的数据变更日志,TiCDC可以将数据解析为有序的行级变更数据输出到下游。
详细的介绍可以看
官方文档:https://docs.pingcap.com/zh/tidb/stable/ticdc-overview

二、安装与卸载

我这里之前已经安装的基本的tidb集群,安装/卸载ticdc也就是集群的扩容和缩容操作。

1. 扩容ticdc节点

①编写scale-out.yaml文件(我的理解,文件名可自定义)

# 这里扩容两个节点
cdc_servers:
  - host: X.X.X.X
    gc-ttl: 86400
    data_dir: /data/deploy/install/data/cdc-8300
  - host:  X.X.X.X
    gc-ttl: 86400
    data_dir: /data/deploy/install/data/cdc-8300
XXX.yaml文件中
host为节点ip
gc-ttl为gc大小 86400为默认值
data_dir为ticdc的路径

②运行扩容命令

tiup cluster scale-out <cluster-name> XXX.yaml

注意:建议新增节点和集群节点之间设置为为免密通信(ssh)状态
③查看集群状态

tiup cluster display <cluster-name>

如图扩容成功
在这里插入图片描述

2. 缩容ticdc节点

缩容运行命令

tiup cluster scale-in <cluster-name> --node X.X.X.X:8300

查看集群状态,ticdc节点不存在

三、同步到下游的mysql

1. 创建增量同步的配置XXX.toml文件,进行参数配置

# 指定配置文件中涉及的库名、表名是否为大小写敏感
#
# 该配置会同时影响 filter 和 sink 相关配置,默认为 true
#
case-sensitive = true
#
# 是否输出 old value,从 v4.0.5 开始支持
#
enable-old-value = true
#
#是否同步没有有效索引的表
#对于没有有效索引的表,INSERT 和 REPLACE 等操作不具备可重入性,因此会有数据冗余的风险。TiCDC 在同步过程中只保证数据至>少分发一次,因此开启该特性同步没有有效索引的表,一定会导致数据冗余出现。如果不能接受数据冗余,建议增加有效索引,譬如增加具有 AUTO RANDOM 属性的主键列。
force-replicate = true
#
[filter]
# 过滤器规则
# 过滤规则语法:https://docs.pingcap.com/zh/tidb/stable/table-filter#表库过滤语法
# 根据需要指定库和表
rules = ['*.*']
#
[mounter]
# mounter 线程数,用于解码 TiKV 输出的数据
#
worker-num = 16
#
[sink]
# 对于 MQ 类的 Sink,可以通过 dispatchers 配置 event 分发器
# 支持 default、ts、rowid、table 四种分发器,分发规则如下:
#
# - default:有多个唯一索引(包括主键)时按照 table 模式分发;只有一个唯一索引(或主键)按照 rowid 模式分发;如果开启了 old value 特性,按照 table 分发
#
# # - ts:以行变更的 commitTs 做 Hash 计算并进行 event 分发
#
# # - rowid:以所选的 HandleKey 列名和列值做 Hash 计算并进行 event 分发
#
# # - table:以表的 schema 名和 table 名做 Hash 计算并进行 event 分发
#
# # matcher 的匹配语法和过滤器规则语法相同
#
# # dispatchers = [
#
# # {matcher = ['test1.*', 'test2.*'], dispatcher = "ts"},
#
# # {matcher = ['test3.*', 'test4.*'], dispatcher = "rowid"},
#
# # ]
#
# # 对于 MQ 类的 Sink,可以指定消息的协议格式
#
# # 目前支持 default、canal、avro 和 maxwell 四种协议。default 为 TiCDC Open Protocol
protocol = "default"
#
[cyclic-replication]
# 是否开启环形同步
#
enable = false
#
# # 当前 TiCDC 的复制 ID
#
replica-id = 1
#
# 需要过滤掉的同步 ID
#
filter-replica-ids = [2,3]
#
# 是否同步 DDL
#
sync-ddl = true

2. 运行创建同步任务的命令

./tiup ctl:v5.3.0 cdc changefeed create --pd=http://X.X.X.X:2379 --sink-uri="mysql://root:root@X.X.X.X:3306/" --config ./XXX/XXX.toml --changefeed-id="task1" --sort-engine="unified"
或者
./cdc cli changefeed create  --pd=http://X.X.X.X:2379 --sink-uri="mysql://root:root@X.X.X.X:3306/" --config ./XXX/XXX.toml --changefeed-id="task1" --sort-engine="unified"

3. 查询同步任务

查询任务列表:./cdc cli changefeed list --pd=http://主机名:2379
查询下指定任务:./cdc cli changefeed query -s --pd=http://srv190:2379 --changefeed-id="任务名称"

如图
在这里插入图片描述

四、同步到下游的kafka

1. 根据同步到mysql的文件进行配置

本篇第三节的第1小节

2. 运行创建任务的命令

./tiup ctl:v5.3.0 cdc changefeed create --pd=http://srv190:2379 --sink-uri='kafka://X.X.X.X:9092/tidb_cdc?kafka-version=2.6.0&partition-num=1&max-message-bytes=67108864&replication-factor=1&protocol=canal-json' --config /XXX/cdc.toml --changefeed-id="kafka-task1"
或者
./cdc cli changefeed create --pd=http://srv190:2379 --sink-uri='kafka://X.X.X.X:9092/tidb_cdc?kafka-version=2.6.0&partition-num=1&max-message-bytes=67108864&replication-factor=1&protocol=canal-json' --config /XXX/cdc.toml --changefeed-id="kafka-task1"

3.查看同步任务

查询任务列表:./cdc cli changefeed list --pd=http://主机名:2379

如图
在这里插入图片描述

4. kafka-eagle查看同步日志

在这里插入图片描述

如果没有kafka-eagle,可以参考kafka-eagle部署相关文章:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值