TICDC 数据同步至 MySQL 初体验
作者: zjhangzhou2022 原文来源:https://tidb.net/blog/04cdbc58
TiCDC 是一款 TiDB 增量数据同步工具,通过拉取上游 TiKV 的数据变更日志,TiCDC 可以将数据解析为有序的行级变更数据输出到下游。
TiCDC 架构
TiCDC 作为 TiDB 的增量数据同步工具,通过 PD 内部的 etcd 实现高可用,通过多个 TiCDC 进程获取 TiKV 节点上的数据改变,在内部进行排序、合并等处理之后,通过多个同步任务 (Changefeed),同时向多个下游系统进行数据同步。
集群环境:TiDB 版本:v6.5.2MySQL 版本:5.7**
1. 首先查看 TiDB 集群状态 **
tiup cluster display tidb-test
我们可以看到 cdc 组件已经安装,如果没有安装,我们可以使用扩容方式,安装一台 cdc。
大致安装过程:
a) 首先编辑文件
vi cdc-scale-out.yaml
b) 然后开始扩容:
tiup cluster scale-out tidb-test cdc-scale-out.yaml -uroot -p
c) 使用 ctl 工具查看 cdc 安装情况,如果没有 ctl 会自动进行安装:
tiup ctl:v6.5.2 cdc capture list –pd=http://192.168.31.202:2379
is-owner 为 true 表示 TiCDC 节点为 owner 节点。
2. 创建同步任务
创建同步任务命令:
tiup cdc cli changefeed create –server=http://192.168.31.100:8600 –sink-uri=”mysql://test:test@192.168.31.100:3306/” –changefeed-id=“mysql-task-1” –sort-engine=“unified”
执行报错,这是由于 MySQL 没有加载时区,可以通过 mysql_tzinfo_to_sql 命令加载时区,加载后就可以正常创建任务或同步任务。
再次执行创建同步任务就会创建成功
命令查看同步任务:
tiup cdc cli changefeed list –server=http://192.168.31.100:8600
执行报错,这是由于 TiCDC 只能增量同步,而目标端 MySQL 还未创建相应库表引起,此时需要在目标端 MySQL 上面创建库表
再次使用命令查看同步任务:
“state”: “normal” : 表示任务状态正常
“tso”: 442219081055338503 : 表示同步任务的时间戳信息
“checkpoint”: “2023-06-16 12:11:59.309” : 表示同步任务的时间。
3. 测试同步任务
1)我这里后台运行一个脚本,不断往 TiDB 数据库 tdb.ti_1 插入数据,TiDB 查看数据,可以看到表数据总记录不断在增长
2)MySQL 查看数据表 ti_1,总记录也在不断增长
说明增量数据通过源端 TiDB 同步到目标端 MySQL
4. 总结
简单总结下,主要操作步骤如下:
a)已安装 TiCDC 组件
b)创建同步任务,由于 TiCDC 只能增量同步,所以目标端需提前创建同步数据表
c)测试验证数据
5. 思考
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/2cc8b61c750cab2f5d54f5982】。文章转载请联系作者。
评论