从MySQL同步数据到TiDB
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从MySQL同步数据到TiDB相关的知识,希望对你有一定的参考价值。
参考技术Avim dm-topology.yaml
根据 不同场景 ,编辑任务配置文件 vim task.yaml ,点击查看 详细配置
1. 出现错误时,需查询任务 query-status 具体信息
2. 其任务 stage 状态为 Paused
3. 解决问题后,可以通过 resume-task 命令进行恢复
TIDB - 使用 TICDC 将数据同步至下游 Mysql 中
一、TICDC
TiCDC 是一款通过拉取 TiKV 变更日志实现的 TiDB 增量数据同步工具,具有将数据还原到与上游任意 TSO 一致状态的能力,同时提供开放数据协议 (TiCDC Open Protocol),支持其他系统订阅数据变更。
和前面学习的Tidb binlog 不同,binlog 是直接取的tidb-server 的日志信息,而TiCDC则是取的 Tikv 的,相比性能更优,但TiCDC 只有数据修改时会触发同步,不包括ddl,所以说使用TICDC,必须保证两端的数据结构一致。
TiCDC 的架构
TiCDC 运行时是一种无状态节点,通过 PD 内部的 etcd 实现高可用。TiCDC 集群支持创建多个同步任务,向多个不同的下游进行数据同步。
二、TICDC 的使用
在使用CDC前,先看下目前的集群架构,不了解的TIDB集群架构的,可以看下本专栏的TIDB系列文章。
tiup cluster display tidb-test
现在我们使用扩容的方式,扩容出一台TICDC:
vi scale-out.yaml
写入以下内容:
cdc_servers:
- host: 192.168.40.161
port: 8300
开始扩容:
tiup cluster scale-out tidb-test scale-out.yaml -uroot -p
已经扩容成功,再来看下集群信息:
CDC就已经装好了,下面我们可以通过ctl 工具查看下CDC的部署信息,如果没有ctl工具的话,会自动安装:
tiup ctl:v5.0.0 cdc capture list --pd=http://192.168.40.160:2379
is-owner 为 true 代表当 TiCDC 节点为 owner 节点。
创建同步任务:
tiup cdc cli changefeed create --pd=http://192.168.40.160:2379 --sink-uri="mysql://root:root123@192.168.40.1:3307/" --changefeed-id="replication-task-1" --sort-engine="unified"
如果没有工具的话会下载,如果不想下载,可以去安装CDC的主机上,进入CDC的安装目录的bin下,就有cdc的执行脚本:
直接使用脚本创建任务:
./cdc cli changefeed create --pd=http://192.168.40.160:2379 --sink-uri="mysql://root:root123@192.168.40.1:3307/" --changefeed-id="replication-task-1" --sort-engine="unified"
–sink-uri=“mysql://root:root123@192.168.40.1:3307/” : 目标库(下游)MySQL 数据库的信息
–changefeed-id=“replication-task-1” 数据同步任务 ID
–sort-engine=“unified” :不定义引擎。
出现上面日志,则代表任务创建成功。
使用下面指令可以查看同步任务:
./cdc cli changefeed list --pd=http://192.168.40.160:2379
“state”: “normal” : 表示任务状态正常。
“tso”: 429574071882350593 : 表示同步任务的时间戳信息。
“checkpoint”: “2021-12-05 17:03:57.393” :表示同步任务的时间。
查询任务的详细信息:
./cdc cli changefeed query --pd=http://192.168.40.160:2379 --changefeed-id=replication-task-1
三、测试同步任务
TIDB 和 Mysql中都有testdb 数据库,和user 表:
首先在Tidb中插入一条数据:
insert into user(name,age) value('bxc','25');
然后在mysql 中查询信息:
喜欢的小伙伴可以关注我的个人微信公众号,获取更多学习资料!
以上是关于从MySQL同步数据到TiDB的主要内容,如果未能解决你的问题,请参考以下文章
TIDB - 使用 TICDC 将数据同步至下游 Mysql 中
Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB
Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB
Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB
Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB
单挑kettle/datax,实测免费数据同步工具Tapdata Cloud如何实时同步SQLServer,Oracle,MySQL,PG,MongoDB,达梦,TiDB,ES等异构数据库