数据库实时同步利器——CDC(变化数据捕获技术)

article/2025/10/9 16:32:46

在进行数据ETL过程中,我们经常需要通过周期性的定时调度将业务数据按照T+1的方式同步到数据仓库中,进行数据分析处理,最终通过BI报表展示给最终用户。但这种方式实时性较差,用户往往只能看到昨天的数据,会影响用户决策的及时性;

而如果用户要近实时的查看报表,则需要将调度周期频率提高到小时或分钟,这对整个数据分析系统是个很大的考验;而上述过程也只适用于数据不断新增的情况,如果遇到业务数据修改、删除的过程,则只能每次全量同步覆盖;在面对上述数据同步过程中数据时效性要求高、历史数据会变更的问题,我们可以使用变化数据捕获技术进行数据的实时同步。

什么是变化数据捕获?

变化数据捕获 (Change Data Capture,缩写CDC) 是指识别和捕获对数据库中的数据所做的更改(包括数据或数据表的插入、更新、删除等),然后将这些更改按发生的顺序完整记录下来,并实时通过消息中间件传送到下游流程或系统的过程。通过这种方式,CDC能够向数据仓库提供高效、低延迟的数据传输,以便信息被及时转换并交付给专供分析的应用程序。

CDC具备哪些优点呢?

对于各种时间敏感类的数据很适合通过CDC的方式进行同步传输,其具备以下好处:

  • 通过增量加载或将数据更改实时流式传输,而无需周期性调度执行批量加载更新操作。

  • CDC实时同步传输数据,它利于不停机的数据库迁移,并支持实时分析,可以帮助用户根据最新的数据做出更快、更准确的决策。

  • CDC最大限度地减少了数据的传输网络流量,适合跨广域网传输数据。

  • CDC可以确保多个系统中的数据保持同步。

CDC的使用场景有哪些呢?

CDC技术的应用场景非常广泛,包括:

  • 数据分发:将一个数据源的数据分发给多个下游业务系统,常用于业务解耦、微服务系统。

  • 数据采集:面向数据仓库、数据湖的ETL数据集成,消除数据孤岛,便于后续的分析。

  • 数据同步:常用于数据备份、容灾等。

常见的变化数据捕获方法

基于查询的CDC

这种方法中,需要不断的查询源数据库表中的数据,以获取更改的数据记录;查询过程中需要通过某些列来判断哪些数据是变更的;常见的有时间戳列、自增序列列,可以通过保存创建时间列、修改时间列来表示插入、变更的记录,自增列也很容易识别出新插入的记录。

基于触发器的CDC

在这个方法中,当业务系统执行插入、更新、删除这些SQL时,以激活数据库的触发器,使其对数据记录进行变更捕获,并将数据保存在一个临时表中,最后将变更数据从临时表中抽取到数据仓库中。

基于快照的CDC

如果上述的触发器以及增加列查询的方式都不被允许的情况下,就可以使用快照表等方式进行变更数据的捕获;其实现思路就是通过比较源表和快照表的方式,获取数据的变更信息,通过快照的方式可以检测到插入、更新以及删除的数据记录。

基于日志的CDC

当数据库表完成一个的新的DML(insert,update,delete)操作后,数据库都会将它实时记录到日志文件中;通过解析数据库操作日志的方式,可以将插入、更新、删除的数据更改操作都可以捕获,发送下游系统。

上述4种CDC的实现方式中,基于日志方式的CDC是最优的实现方式,其实时性高、无侵入性,并且能将所有的更改捕获;如果无法获取并解析数据库日志文件,则可以选择其他三种方式进行CDC;

基于快照的方式虽然可以捕获所有的变更记录,但是其有个明显的缺点就是需要大量的存储空间来保存快照数据,且实时性低;

基于触发器的方式因为要增加触发器,则对变更数据进行多次写入操作,有一定的侵入性;基于查询的方式则需要在数据表上进行时间列、自增列的添加,侵入性强,且无法获取删除操作,因此很少使用。

CDC变更日志流

前边我们已经对CDC有了初步的了解,CDC的核心思想是进行数据更改的捕获和识别,并将其发送下游系统,那数据的变更过程是以什么样的形式发送下游系统的呢,那就是CDC变更日志流。

CDC程序将包括插入、更新、删除的数据操作通过进行解析处理转换,形成统一规范的变更消息传递给下游的系统,这些消息流包括INSERT(+I),UPDATE_BEFORE(-U),UPDATE_AFTER(+U),DELETE(-D)四种消息状态语义:

  • INSERT(+I):新插入的数据记录行

  • UPDATE_BEFORE(-U):数据记录行被更新前的数据

  • UPDATE_AFTER(+U):数据记录行被更新后的数据

  • DELETE(-D):删除的数据记录行

下面我们以一张人员信息表的业务数据变化过程为例,进行CDC变更日志流的解释。人员表有人员ID(id),姓名(name),年龄(age)等字段,对其进行如下插入、更新、删除的数据记录事务操作:

1.  在人员表中插入一条人员信息,ID为1,姓名为小明,18岁。

2.  再向人员表中插入一条人员信息,ID为2,姓名为李华,32岁。

3.  修改小明的年龄为20岁。

4.  从人员表中将李华删除。

5.  最后向人员表中插入一条人员信息,ID为3,姓名为丽丽,年龄为8岁。aa

上述人员表的CDC变更日志流如下:

最终的人员表数据如下:

除过上述示例中的变更日志流的表示方式外,还可以通过其他格式进行表示,只要准确描述上述4中更改消息语义即可。

CDC变更日志流可以记录整张表的数据变更记录,使得我们可以通过执行变更流,在任意位置停止,而将CDC表的数据恢复到任何时刻,这比定时备份更加可靠及节省空间。

在Tempo DF数据工厂中如何进行CDC

Tempo数据工厂是集海量数据集成、实时数据加工、离线数据处理、自定义组件扩展、一体化监控运维五大核心功能的大数据开发平台,为企业用户降低了多源异构数据的融合成本,赋能全链路数据开发,让数据更好发挥价值。

在Tempo数据工厂平台中,用户可以通过拖拉拽的方式快速配置完成一个实时自助流程进行业务数据的CDC,并且可以进行后续的计算处理,最终将数据写入目标源中,一个完整的CDC业务数据流,如下图:

我们可以将左侧输入节点中的MySQL CDC拖入右侧画布中,双击打开节点配置面板,通过选择已经配置好的MySQL数据源,选择需要进行CDC的库表,节点自动读取表的列信息展示,最后点击右上角的应用按钮,这样一个MySQL数据源表的CDC输入节点就配置完成了,配置如下图:

目前Tempo数据工厂支持的可进行CDC的数据库列表如下:

数据库

版本

Oracle

版本: 12c, 19c, 21c

MySQL

版本: 5.7, 8.0.x

PostgreSQL

版本: 10, 11, 12, 13, 14

插件: decoderbufs, pgoutput

SQL Server(孵化中)

版本: 2017, 2019

Db2(孵化中)

版本: 11.5

如果大家在实际的业务数据分析过程中,想要提高数据的时效性,降低处理数据变更的难度,可以尝试使用CDC进行实时数据同步,而Tempo数据工厂可以让您更快的应用它。


http://chatgpt.dhexx.cn/article/cRXnk2x6.shtml

相关文章

Mysql数据实时同步实践

关于小米内部使用的数据库你知道多少?(文末有福利) 往期文章回顾:Flink流式计算在节省资源方面的简单分析 背景 MySQL由于自身简单、高效、可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万…

SQLServer数据库同步准实时方案

1. 需求 1)如何将在线运营的SQLServer数据库数据及时同步到另外一个SQLServer数据库。 2)数据仓库系统的数据抽取会对源系统造成巨大压力,严重影响性能和响应速度。如何将生产数据快速抽取到历史数据仓库,改善业务系统的性能。…

Oracle RAC+ASM 数据库实时同步

采用Beedup实现数据库实时同步,主库环境Oracle RACASM,内存64G,历史数据19T,日增归档100G,从库单实例环境,内存192G。 以下是项目实施过程遇到的主要问题: 1 历史数据同步 启用Beedup批量复制功…

如何对MySQL数据库中的数据进行实时同步

下载网站:www.SyncNavigator.CN 客服QQ1793040 ---------------------------------------------------------- 关于HKROnline SyncNavigator 注册机价格的问题 HKROnline SyncNavigator 8.4.1 企业版数据同步软件 自2009年第一个版本开发出来以来,经过8年不断地根据客户需求…

SQL server数据实时同步到mysql

本文在https://blog.csdn.net/zhaowenzhong/article/details/50599372的基础上做了测试,改动了个别有误及没有注释的地方 在同步的前提下,环境一定要搭好,测试的时候应为mysql安装的一些bug导致失败了很多次,又重装过 ---安装安…

SqlServer数据实时同步到mysql

SqlServer数据实时同步到mysql 一、首先要装一个ODBC的驱动用来建立mysql的连接。http://www.mysql.com/products/connector/ 注意:一定要用32位的可用cmd执行这个命令: c:\windows\syswow64\odbcad32.exe配置【用户DSN】和【系统DSN】 二、打开sql…

SqlServer实时数据同步到MySql

---安装安装mysqlconnector http://www.mysql.com/products/connector/ /* 配置mysqlconnector ODBC数据管理器->系统DSN->添加->mysql ODBC 5.3 ANSI driver->填入data source name如jt,mysql的ip、用户名、密码即可 */ --新建链接服务器 exec sp_addlinkedserver…

数据库实时同步技术解决方案

下载网站:www.SyncNavigator.CN 客服QQ1793040 ---------------------------------------------------------- 关于HKROnline SyncNavigator 注册机价格的问题 HKROnline SyncNavigator 8.4.1 企业版数据同步软件 自2009年第一个版本开发出来以来,经过8年不断地根…

不同SQL Server数据库之间表数据的实时同步-发布与订阅

最近要将不同服务器上数据库的表数据同步汇总,所以就涉及到了数据同步的问题,以前没有接触过,在网上找了找方法, 大抵的方法有三种: 1,在数据库中编写触发器 2,写一个同步程序去完成同步 3&…

“实时数据同步:构建高效的 MySQL 数据同步方案“

方案一 基于LVM快照进行备份切换 介绍: MySQL数据库本身并不支持快照功能(sqlServer支持) 因此快照备份是指通过文件系统支持的快照功能对数据库进行备份 备份的前提是将所有数据库文件放在同一文件分区中,然后对该分区进行快照操作 LVM是LINUX系统下对磁盘分区进…

多源异构数据库实时同步解决方案

1 需求概述 将企业多个业务系统产生的交易数据流实时同步到数据仓库或大数据平台,通过对交易数据的联机实时分析,快速制定或调整商业计划,提升企业的核心竞争力。 需求关键点:同步过程不可影响或中断业务系统正常运行、同步延时…

hadoop大数据平台搭建

大数据平台搭建 大数据平台搭建虚拟机环境准备修改ip,映射IP地址ssh无密码通信同步时间关闭防火墙安装jdk hadoop平台正式搭建安装hadoop安装 kafka安装spark 大数据平台搭建 zookeeperkafkaspark Hadoop yarn 虚拟机环境准备 我们在搭建大数据分布式系统之前需要对软件和虚…

CDH大数据平台搭建之VMware及虚拟机安装

CDH大数据平台搭建-VMware及虚拟机安装 前言一、下载所需框架二、安装(略)三、安装虚拟机1、新建虚拟机(按照操作即可) 总结 前言 搭建大数据平台需要服务器,这里通过VMware CentOS镜像进行模拟,供新手学习必备。 一、下载所需框架 VMware 和CentOS可以…

CDH大数据平台搭建之虚拟环境配置

CDH大数据平台搭建之虚拟环境配置 前言一、虚拟机网络配置1.配置ip地址2.验证配置是否成功 二、关闭防火墙1.防火墙命令2.禁用防火墙 三、虚拟机主机名配置1.临时配置主机名2.永久配置主机名 四、配置域名解析五、新建大数据用户1.新建用户2.配置普通用户sudo权限3.验证 六、SS…

大数据平台搭建(一):虚拟机环境配置

前言 最近看了些hadoop相关的资料,然后想自己从零开始搭建一个大数据平台。 大数据平台架构 1.概念性的东西还是不想多啰嗦,先上一张网上找的平台架构图,上图的目的是为了大家对整个平台架构有个宏观的认识,这个很重要&#xff0c…

怎么搭建大数据平台,这个大数据平台方案值得学习

在大数据的时代,不仅仅是个人,企业的发展也离不开大数据。对于企业来说,一方面用户越来越多从线下转移到线上,用户的特点属性需要通过网络获取,企业需要依靠大数据把握市场变化并了解客户,从而提供满足市场…

大数据平台搭建,cdh选型配置

天天干后端,又干前端,本行大数据,差点生疏了,哦吼~正当我发愁之际。 领导安排任务了,下个月去某控上市公司。他们需要从0 开始做大数据平台,主要工作内容如下, 平台搭建,数据迁移&…

大数据平台CDH搭建

一、数仓之Cloudera Manager 1、CM简介 1.1、简介 Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具。 1.2、架构 1)Cloudera Repository:软件由Cloudera管理分布存储库。(有点类似Maven的中心仓库&…

大数据平台搭建目录

欢迎各位学习和借鉴搭配大数据系统 1.备注 省略了一些文件的创建,请自行创建 2.配置到大数据系统的所有配套文件 案例中所使用的版本,解决了版本适配问题 百度网盘链接:https://pan.baidu.com/s/1B5sx61Ori4U8fshHE3bJaA 提取码:6666 一.安装Lunx&…

高可用的分布式Hadoop大数据平台搭建,超详细,附代码。

目录 前言1: 前言2: 一,基础环境 1,三台Centos7.5,一台master,两台slave1和slave2 2,IP配置 ​ 3,改主机名 4,配三台主机映射 5,三台主机时钟同步 6&a…