1
1
2
1
专栏/.../

TICDC 数据同步至 MySQL初体验

 linnana  发表于  2023-06-26
原创迁移

TiCDC 是一款 TiDB 增量数据同步工具,通过拉取上游 TiKV 的数据变更日志,TiCDC 可以将数据解析为有序的行级变更数据输出到下游。

TiCDC 架构

TiCDC 作为 TiDB 的增量数据同步工具,通过 PD 内部的 etcd 实现高可用,通过多个 TiCDC 进程获取 TiKV 节点上的数据改变,在内部进行排序、合并等处理之后,通过多个同步任务 (Changefeed),同时向多个下游系统进行数据同步。

TiCDC architecture

集群环境: TiDB版本:v6.5.2 MySQL版本:5.7 1.首先查看TiDB集群状态

tiup cluster display tidb-test

image.png

我们可以看到cdc组件已经安装,如果没有安装,我们可以使用扩容方式,安装一台cdc。

大致安装过程:

a)首先编辑文件

vi cdc-scale-out.yaml

image.png

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

image.png

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"

image.png

执行报错,这是由于MySQL没有加载时区,可以通过 mysql_tzinfo_to_sql 命令加载时区,加载后就可以正常创建任务或同步任务。

image.png

再次执行创建同步任务就会创建成功

image.png

命令查看同步任务:

tiup cdc cli changefeed list --server=http://192.168.31.100:8600

image.png

执行报错,这是由于TiCDC只能增量同步,而目标端MySQL还未创建相应库表引起,此时需要在目标端MySQL上面创建库表

image.png

再次使用命令查看同步任务:

"state": "normal" : 表示任务状态正常

"tso": 442219081055338503 : 表示同步任务的时间戳信息

"checkpoint": "2023-06-16 12:11:59.309" :表示同步任务的时间。

image.png

3.测试同步任务

1)我这里后台运行一个脚本,不断往TiDB数据库tdb.ti_1插入数据,TiDB查看数据,可以看到表数据总记录不断在增长

image.png

2)MySQL查看数据表ti_1,总记录也在不断增长

image.png

 说明增量数据通过源端TiDB同步到目标端MySQL

4.总结

简单总结下,主要操作步骤如下:

a)已安装TiCDC组件

b)创建同步任务,由于TiCDC只能增量同步,所以目标端需提前创建同步数据表

c)测试验证数据

5.思考

实际应用场景一般是源端TiDB已投入使用有一段时间,后来由于业务需要同步数据,此时可以用TiDB工具Dumpling从TiDB导出逻辑全量数据(比如sql格式),然后导入到MySQL,最后启用TiCDC增量实时同步功能。

1
1
2
1

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论