tidb-使用ticdc将数据同步至下游mysql中(代码片段)

小毕超 小毕超     2023-02-20     648

关键词:

一、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 中查询信息:


喜欢的小伙伴可以关注我的个人微信公众号,获取更多学习资料!

tidb-使用ticdc将数据同步至下游mysql中(代码片段)

...DC只有数据修改时会触发同步,不包括ddl,所以说使用TICDC,必须保证两端的数据结构一致。TiCDC的架构TiCDC运行时是一种无状态节点,通过PD内部的etcd实现高可用。TiCDC集群支持创建多个同步任务,向多个不同... 查看详情

tidb-使用tidbbinlog将日志同步至下游kafka中(代码片段)

一、TiDBBinlog在上篇文章中我们介绍了使用TiDBBinlog将数据同步至下游的Mysql中,本篇我们学习下使用TiDBBinlog工具将数据同步至Kafka中自定义业务逻辑,比如可以做TIDB和ES、MongoDB或Redis的数据同步,这功能就和Canal解析Mys... 查看详情

ticdc+confluent同步数据到oracle

使用TiCDC将TiDBtest数据库多张表以AVRO格式发送到Kafka多个Topic,然后使用Confluent自带开源connect将Kafka多个topic数据实时写入到Oracle数据库,此链路支持实时数据insert/delete/update/createtableddl/addcolumnddl等。理论上此链路还可以支持下游... 查看详情

flink最佳实践之使用canal同步mysql数据至tidb

背景介绍本文将介绍如何将MySQL中的数据,通过Binlog+Canal的形式导入到Kafka中,继而被Flink消费的案例。为了能够快速的验证整套流程的功能性,所有的组件都以单机的形式部署。如果手上的物理资源不足,可以... 查看详情

ticdc源码阅读ticdc集群工作过程解析(代码片段)

...作用完整视频回顾启动TiCDCServer启动一个TiCDCServer时,使用的命令如下,需要传入当前上游TiDB集群的PD地址。cdcserver--pd=http://127.0.0.1:2379它会启动一个TiCDCServer运行实例,并且向PD的ETCDServer写入TiCDC相关的元数据,... 查看详情

tidb-使用tidblightning迁移mysql数据至tidb中(代码片段)

...Mydumper或CSV输出格式的数据源。你可以在以下两种场景下使用Lightning:迅速导入大量新数据。备份恢复所有数据。TiDBLightning主要包含两个部分:tidb-lightning(“前端”):主要完成适配工作,通过读取数据源ÿ... 查看详情

tidb-使用tidbbinlog实现数据复制(代码片段)

...og与TiDBv5.0版本开始引入的一些特性不兼容,无法一起使用,建议使用TiCDC替代TiDBBinlog。TiCDC在后面的文章中也会讲到。下面实现TIDB到Mysql的数据复制。二、在集群中扩容出pump和drainer当前的集群情况:tiupclusterdisplaytidb... 查看详情

ticdc源码阅读ticdc集群工作过程解析(代码片段)

内容概要TiCDC是一款TiDB增量数据同步工具,通过拉取上游TiKV的数据变更日志,TiCDC可以将数据解析为有序的行级变更数据输出到下游。本文是TiCDC源码解读的第三篇,主要内容是讲述TiCDC集群的启动及基本工作过程ÿ... 查看详情

ticdc源码阅读tikvcdc模块介绍(代码片段)

内容概要TiCDC是一款TiDB增量数据同步工具,通过拉取上游TiKV的数据变更日志,TiCDC可以将数据解析为有序的行级变更数据输出到下游。本文是TiCDC源码解读的第二篇,将于大家介绍TiCDC的重要组成部分,TiKV中的CDC... 查看详情

flink最佳实践之通过ticdc将tidb数据流入flink

背景介绍本文将介绍如何将TiDB中的数据,通过TiCDC导入到Kafka中,继而被Flink消费的案例。为了能够快速的验证整套流程的功能性,所有的组件都以单机的形式部署。如果需要在生产环境中部署,建议将每一个组件... 查看详情

ticdc源码阅读ticdc架构概览(代码片段)

...系列文章的第一期,主要叙述了TiCDC的目的、架构和数据同步链路,旨在让读者能够初步了解TiCDC,为阅读其他源码阅读文章起到一个引子的作用。TiCDC是什么?TiCDC是TiDB生态中的一个数据同步工具&# 查看详情

tidbonlineddl在ticdc中的应用

...,服务层节点可能还没有加载newschema,还可以往表中插入数据,这些数据会被TiCDC直接根据tableid过滤掉,最终上下游都是没有这个表存在的, 查看详情

tidboperator恢复持久卷上的备份文件

...复方法基于TiDBOperator的CustomResourceDefinition(CRD)实现,底层使用​​BR​​工具来恢复数据。BR全称为Backup&Restore,是TiDB分布式备份恢复的命令行工具,用于对TiDB集群进行数据备份和恢复。常用场景当使用BR将TiDB集群数据备份到... 查看详情

tidb数据库使用syncer工具同步实时数据(代码片段)

mysql>selectcampaign_id,count(id)fromcreative_outputgroupbycampaign_id;602843rowsinset(4min44.23sec)mysql>selectis_cr_own,count(id)fromcreative_outputgroupbyis_cr_own;597684rowsinset(44.55sec)&n 查看详情

从mysql同步数据到tidb

参考技术Avimdm-topology.yaml根据不同场景,编辑任务配置文件vimtask.yaml,点击查看详细配置1.出现错误时,需查询任务query-status具体信息2.其任务stage状态为Paused3.解决问题后,可以通过resume-task命令进行恢复 查看详情

ticdc在大单表场景下的性能优化:我们如何将吞吐量提升7倍?(代码片段)

在2023伊始,我们很高兴向大家宣布,TiDB6.5LTS版本已经发布了。这是TiDBV6的第二个长期支持版(上一个是TiDB6.1),除了携带了诸多备受期待的新特性,同时也将得到TiDB开发社区的长期维护,是推荐企业... 查看详情

tidb的数据迁移工具现已开源

...该数据迁移工具遵循Apache-2.0开源协议,允许用户自由地使用及修改。据介绍,DM(DataMigration)是一体化数据同步任务管理平台,支持从MySQL/MariaDB到TiDB的数据迁移、全量备份和MariaDB/MySQLbinlog增量同步,有助于减少操作成本和简化错... 查看详情

单挑kettle/datax,实测免费数据同步工具tapdatacloud如何实时同步sqlserver,oracle,mysql,pg,mongodb,达梦,tidb,es等异构数据库

摘要:本文以SQLServer为例,实测免费数据同步工具TapdataCloud。SQLServer关系数据库管理系统是一个全面的数据库平台,安全性可用性能高,方便易用,广泛应于ERP系统、商业智能、垂直领域零售等场景。很多公... 查看详情