写点什么

TICDC 数据同步至 MySQL 初体验

  • 2023-06-30
    北京
  • 本文字数:1094 字

    阅读完需:约 4 分钟

作者: 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. 思考

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


发布于: 刚刚阅读数: 2
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
TICDC 数据同步至 MySQL初体验_迁移_TiDB 社区干货传送门_InfoQ写作社区