体验 TiDB v6.0.0 之 TiCDC
作者: 边城元元原文来源:https://tidb.net/blog/54af3eb4
体验 TiDB v6.0.0 之 TiCDC
一、背景
TiDBv6.0.0 发布具有特殊的意义,顺便体验一把 TiCDC。
接上篇从 Mysql3306 通过 DM 迁移数据到 TiDB 集群中 test_dm_all 数据库(全量 + 增量数据同步),本次体验是从 TiDB 集群的 test_dm_all 数据库通过 TiCDC 同步到 Mysql 主从集群。
二、基本知识
TiCDC 是一款 TiDB 增量数据同步工具,通过拉取上游 TiKV 的数据变更日志,TiCDC 可以将数据解析为有序的行级变更数据输出到下游。
2.1 TiCDC 适用场景:
数据库灾备:TiCDC 可以用于同构数据库之间的灾备场景,能够在灾难发生时保证主备集群数据的最终一致性,目前该场景仅支持 TiDB 作为主备集群。
数据集成:TiCDC 提供 TiCDC Canal-JSON Protocol,支持其他系统订阅数据变更,能够为监控、缓存、全文索引、数据分析、异构数据库的主从复制等场景提供数据源。
2.2 组件
TiKV CDC 组件:只输出 key-value (KV) change log。
内部逻辑拼装 KV change log。
提供输出 KV change log 的接口,发送数据包括实时 change log 和增量扫的 change log。
TiCDC 集群 多个
capture
组成一个 TiCDC 集群,负责 KV change log 的同步。每个
capture
负责拉取一部分 KV change log。对拉取的一个或多个 KV change log 进行排序。
向下游还原事务或按照 TiCDC Open Protocol 进行输出。
三、环境准备
本示例演示 TiDB-(TiCDC)->Mysql 集群
3.1 TiDB 中的 test_dm_all 数据
3.2 Mysql 3307(主库),Mysql 3308(从库)
1、win 下 配置好主库 (mysql3307) my3307.ini 2、复制 mysql3307 目录 为 mysql3308 3、修改 mysql3308 的 my3308.ini
3.2.1 Mysql 配置文件
my3307.ini
mysql3308.ini
四、TiCDC 实验
4.1 扩容 TiCDC 节点
4.1.1 编写 scale-out.yaml 文件
4.1.2 执行扩容命令
4.1.3 验证 TiCDC 集群
4.2 添加任务
4.2.1 启动 mysql3307,mysq3308
mysql3307 执行下面的 sql:
mysql3308 执行下面 sql:
mysql3307 到 msql3308 的主从同步测试正常。
4.2.2 创建 TiCDC 任务
4.2.3 验证 TiDB 数据变更是否同步到下游
4.2.4 追加已经数据表
图上的 1、是在 ticdc 任务开始后,新插入了数据到 m_user 表中,之后再 mysql3307 中追加 m_user 表结构,自动从任务开始后补数据;
图上的 2 和 3,表示原始上游有数据,任务开始后没有做数据变更,在 mysql3307 中追加 m_user_new 也不会补数据。
4.2.5 使用总结
1、下游要建立对等的数据结构
2、TICDC 任务开启后 上游的表在下游不存在,则不同步
3、如果下游追加了表结构则从任务开始时补数据
4、任务开启后的写操作会同步到下游
5、如果下游存在多写入点,会出现数据不一致的情况
五、Clinic 诊断 TiCDC
clinic 没有单独的类似 collectdm 的组件,
注意:使用 cdc server 方式启动的节点的信息收集不到。
六、总结
本篇文章简单示例了 TiDB 通过 TiCDC 同步数据到下游。TiCDC 的强大之处 TiCDC 开放数据协议,根据 TiCDC 开放数据协议可以同步到下游多种数据媒介。
TiCDC 集群会象 DM 一样也会有对应的 WebUI 可视化界面,很期待 TiCDC 的 WebUI。
谢谢 PingCap,感谢 TiDB 社区!
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/5614465f5ee0ad5052e1949a2】。文章转载请联系作者。
评论