TiCDC数据同步至MySQL的初体验

网友投稿 481 2024-02-24



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

TiCDC数据同步至MySQL的初体验

TiCDC 架构

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

集群环境: TiDB版本:v6.5.2 MySQL版本: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 : 表示同步任务的时间戳信息

3.测试同步任务

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

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

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

4.总结

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

a)已安装TiCDC组件

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

c)测试验证数据

5.思考

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:TiCDC性能调优实践 提升十倍性能
下一篇:TiCDC新特性在多种场景下的应用探索
相关文章