一、CDC(Change Data Capture)概念
CDC即变化数据捕获,指的是一种数据同步技术,它能够实时地捕获数据更改信息,并将捕获的数据传输到目标数据库中,从而确保数据库的数据更新与备份的一致性。我们在进行数据同步传输时,如果只捕获最近产生变化的数据,后续再进行数据操作时就会非常高效。
二、CDC同步数据好处
1、不用CDC同步数据情况
不使用CDC技术的数据同步方式的情况下,数据同步就只能通过定期的批量导入、导出或者定时对源数据库进行增量查询,标记相关数据在同步到目标数据库。
这种方式缺陷在于实时性差,效率低下,数据库负载高,容易出现脏数据等情况,不适用于高频数据变更场景。而CDC同步数据则几乎完美解决这些痛点,能够方便快捷的实现实时数据传输。
2、CDC优势
CDC主要应用于企业级或生产环境中的数据同步场景,使用CDC技术可以为企业带来优势。
首先,它可以提高数据库的可靠性。由于数据库中所有的更改都被记录下来,并可以随时恢复到任何时间点,因此数据库可以更轻松地检测到数据更改的错误或故障,并快速恢复。
其次,CDC技术可以提高数据库的可扩展性。由于它可以轻松地将更改保存到新的位置,并确保新的位置中的数据是完整的,因此可以更轻松地扩展数据库,以满足业务的增长需求。
三、CDC同步数据方法
CDC实时传输数据方案有三种类型,即数据库自带CDC功能,结合第三方CDC工具实现数据集成和自定义开发。
1、数据库自带CDC功能
部分数据库提供了内置的CDC功能,例如Oracle的LogMiner和SQL Server的Change Data Capture。通过配置和启用这些功能,可以实现对数据库事务日志的实时监控和解析,捕获变更数据,并将其传输到目标数据库。这种方式通常具有较高的性能和可靠性,但是缺点也很明显,难以实现不同库表之间的数据同步,泛用性较差。
2、第三方CDC工具
市面上也有一些第三方CDC工具,如Debezium、Canal、FlinkCDC、ETLCloud CDC等。这些工具可以与多种数据库进行集成,并通过读取事务日志或使用数据库提供的API,实时捕获和传输变更数据。它们通常提供了易于配置和管理的界面,可以满足各种数据同步需求。难点在于不同工具有不同的学习成本,使用难度也有区别,一个个试起来有些麻烦。
3、自定义开发
如果数据库不提供内置的CDC功能,或者需要实现更定制化的CDC逻辑,可以考虑自行开发。具体实现方式包括监控数据库的事务日志,解析并过滤出变更数据,然后将其传输到目标数据库。这需要对数据库事务日志的结构和格式有一定的了解,并编写相应的程序来监控和解析。而且开发存在一定难度,需要耗费大量的人力以及时间。
四、CDC结合第三方工具实现实时数据传输
这里就演示一下我正在使用的一款国产CDC工具进行实时数据传输。
ETLCloud社区版是开放平台来的,安装过程非常简单,大家可以根据自己的需求选择不同的安装方式,我这里给出官网下载地址,按照帮助文档安装即可。官网下载地址
(官网下载页面)
我这里进入平台,通过CDC方式进行实时数据传输,平台首页如下图所示:
(ETLCloud社区版平台首页)
使用平台功能前要先在数据源管理模块中配置连接要使用的数据源,平台支持市面上常见的大部分关系型、消息型以及大数据型数据源,配置过程只用填写相关的基本信息即可。另一方面监听表需要开启数据库cdc,方式在帮助文档中有相关教程。数据源有配置模板可以参考,如下图:
(MySQL数据源配置模板)
(SQL Server数据源配置模板)
测试链接成功后,我们回到平台首页,点击进入实时数据集成模块,点击左侧数据库监听器,新增监听器,进行监听器配置。
按照提示填写内容,源数据库即我们之前在数据源管理中配置的数据源,可以通过载入快速下拉选择数据源及库表;
(监听器配置页面)
接收端配置,有四种数据传输模式,这里直接选择最方便的“直接传输到目标库方式”,其它方式可以自行前往官网文档了解。目标数据库同理是我们在数据源管理中配置的数据源,下拉选取即可。
(接收端配置页面)
高级配置,我们采集模式选择“全量+增量”,其他默认。
(高级配置页面)
配置完毕后,点击保存,启动监听器之前,我先展示一下选取的测试监听表以及数据实时传输目标表。
(监听原表-MySQL中10w条左右测试数据)
(数据传输目标表-SQL Server中空表,与源表表结构相同)
启动刚刚配置好的监听器,查看数据同步情况:
(数据传输情况-初始同步的全量数据)
(同步后目标表数据)
手动删除修改源表1条数据后:
手动删除源表18条数据后:
手动新增1条源表数据后:
最终目标表效果:
整体体验下来非常简单方便,全程可视化点击操作,不用编写任何代码,有兴趣的可以自行使用了解。而且还有个好处,可以加入官方的社区群寻求帮助,产品有一个专门的团队在社区群中提供问题解决帮助,使用过程中遇到的问题可以直接询问相关老师,可以省去不少麻烦。
五、总结
综上所述,CDC技术是一种极具价值的实时数据传输同步技术。它可以帮助企业确保数据库的数据完整性和可靠性,提高数据库的可扩展性,可以实现高效、实时的数据传输。
想要通过CDC快速实现实时数据传输,选择合适的CDC工具或自主开发程序是十分重要的,可以将CDC技术无缝集成到你的系统中,使得数据同步更加方便、安全、快速。当然,CDC技术也需要考虑一些问题,如源数据库性能消耗、网络带宽使用等,但在大多数情况下,CDC技术仍然是一个非常可靠和有效的数据同步方式。