TiDB v6.0.0 版本 TiCDC 功能体验

网友投稿 375 2024-03-21



体验TiDB v6.0.0 之TiCDC

一、背景

TiDBv6.0.0发布具有特殊的意义,顺便体验一把TiCDC。

TiDB v6.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

server_id=3 read_only=1 replicate-do-db=test_dm_all

四、TiCDC实验

4.1 扩容TiCDC节点

4.1.1 编写 scale-out.yaml 文件cdc_servers: - host: 10.0.2.15   port: 8300 4.1.2 执行扩容命令dr=127.0.0.1:8301 --data-dir=/tidb-data111/cdc-8301 & cdc server --pd=http://10.0.2.15:2379 --log-file=/tidb-data111/ticdc_8302.log --addr=10.0.2.15:8302 --advertise-addr=10.0.2.15:8302 --data-dir=/tidb-data111/cdc-8302 & 4.1.3 验证TiCDC集群cdc cli capture list --pd=http://10.0.2.15:2379  # 因为有8301,8302 两个节点使用的是cdc server方式启动的。

4.2 添加任务

4.2.1 启动mysql3307,mysq3308

mysql3307 执行下面的sql:

show master status;

mysql3308执行下面sql:

show slave status; stop slave; CHANGE MASTER TO master_host = 127.0.0.1, master_user = root, master_password = 23456, master_log_file = mysql-bin.000001, master_port=3307, master_log_pos = 154; start slave;

mysql3307到msql3308的主从同步测试正常。

4.2.2 创建TiCDC任务QLConnectionError]fail to open MySQL connection: Error 1298: Unknown or incorrect time zone: UTC # 这是因为下游 MySQL 没有加载时区,可以通过 mysql_tzinfo_to_sql 命令加载时区,加载后就可以正常创建任务或同步任务。 # 查看任务 cdc cli changefeed list --pd=http://10.0.2.15:2379 cdc cli changefeed query --pd=http://10.0.2.15:2379 --changefeed-id=replication-task-14.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的组件,

tiup diag collect cluster111 tiup diag pacakge /usr/local0/webserver/tidb/tidb-community-server-v6.0.0-linux-amd64/diag-fSC9vxdLWMk tiup diag upload /usr/local0/webserver/tidb/tidb-community-server-v6.0.0-linux-amd64/diag-fSC9vxdLWMk.diag

注意:使用cdc server方式启动的节点的信息收集不到。

六、总结

本篇文章简单示例了TiDB通过TiCDC同步数据到下游。TiCDC的强大之处TiCDC 开放数据协议,根据TiCDC 开放数据协议可以同步到下游多种数据媒介。

TiCDC集群会象DM一样也会有对应的WebUI可视化界面,很期待TiCDC的WebUI。

谢谢PingCap,感谢TiDB社区!

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

上一篇:云原生云数据库前景
下一篇:云原生数据库优缺点
相关文章