Flink CDC全量和增量同步数据如何保证数据的一致性
Apache Flink 的 Change Data Capture (CDC) 功能主要用于实时捕获数据库中的变更记录,并将其转换为事件流以供下游处理。为了保证全量和增量数据同步时数据的一致性、不丢失和不重复读取,Flink CDC 采用了以下策略:
一、保证一致性与不丢失
1、使用事务
当进行全量或增量同步时,Flink CDC通过与数据库的事务机制结合使用,Flink会将操作封装为一个事务,使用事务以确保数据的完整性和一致性。
Flink CDC 依赖于数据库的日志(如mysql binlog)来捕获事务级别的更改,意味着它能识别事务的开始和结束,从而确保在处理变更事件时保持事务的一致性。
2、幂等性处理(精准一次处理)
Flink 作为流处理引擎本身支持精确一次(exactly-once)的状态一致性保证,重复性变更数据,Flink CDC只会将其处理一次。通过 checkpoint 和两阶段提交机制,Flink 能够在故障恢复时准确地回滚或重放事件,从而避免数据丢失和重复处理。
如下游为iceberg v2表,iceberg支持去重
3、基于时间戳的检查点
Flink CDC使用基于时间戳的检查点机制来保证数据的不丢失。当进行全量同步时,Flink CDC使用数据库的全量数据时间戳确保读取到的全量数据是最新的。增量同步过程中,使用mysql binlog时间戳确保只读到修改变更。Flink会记录当前处理的位置,并在发生故障时从最近的检查点恢复,这样可以确保不会重复读取已经处理过的数据。
二、全量与增量衔接
1、全量同步阶段
在初次全量同步时,Flink CDC 可以通过扫描数据库表的全量数据并生成某一时刻对应的初始化快照来保证全量数据的一致性。然后开始同步全量数据到目标系统,保证目标库有完整数据副本。
2、增量同步阶段
完成全量同步之后,Flink CDC 会从日志中订阅后续的增量变更,从全量扫描时快照完成的时间点,开始同步数据库的binlog更新日志。增量数据以有序的方式被摄入到流处理系统中,与全量数据的末尾自然衔接。
3、全量和增量平滑过渡
在 Flink CDC 中,全量和增量数据可以无缝整合,确保了在任何给定时间点,下游系统的数据视图都是完整且最新的。
对于具有事务性的变更日志,全量快照和增量日志中的事件是可以按顺序叠加处理的,这样就能形成一个完整的、一致的数据视图。
通过这些机制,Flink CDC 实现了全量数据导入和增量数据实时追加之间的平滑过渡,有效保证了数据的完整性与一致性。
Flink CDC全量和增量同步数据如何保证数据的一致性的更多相关文章
- datax实例——全量、增量同步
一.全量同步 本文以mysql -> mysql为示例: 本次测试的表为mysql的系统库-sakila中的actor表,由于不支持目的端自动建表,此处预先建立目的表: CREATE TABLE ...
- MySQL数据以全量和增量方式,同步到ES搜索引擎
本文源码:GitHub·点这里 || GitEE·点这里 一.配置详解 场景描述:MySQL数据表以全量和增量的方式向ElasticSearch搜索引擎同步. 1.下载内容 elasticsearch ...
- MySQL5.7.18 备份、Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份,数据导入导出
粗略介绍冷备,热备,温暖,及Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份 --备份的目的 灾难恢复:意外情况下(如服务器宕机.磁盘损坏等)对损 ...
- 全量、增量数据在HBase迁移的多种技巧实践
作者经历了多次基于HBase实现全量与增量数据的迁移测试,总结了在使用HBase进行数据迁移的多种实践,本文针对全量与增量数据迁移的场景不同,提供了1+2的技巧分享. HBase全量与增量数据迁移的方 ...
- 关于Subversion主从备份方式的调整(全量、增量脚本)更新
本文引用于http://blog.chinaunix.net/uid-25266990-id-3369172.html 之前对Subversion服务器作了迁移,关于SVN的架构也走了调整,有单一的服 ...
- innobackupex在线备份及恢复(全量和增量)
Xtrabackup是由percona开发的一个开源软件,它是innodb热备工具ibbackup(收费的商业软件)的一个开源替代品.Xtrabackup由个部分组成:xtrabackup和innob ...
- Mysql备份工具xtraback全量和增量测试
Mysql备份工具xtraback全量和增量测试 xtrabackup 是 percona 的一个开源项目,可以热备份innodb ,XtraDB,和MyISAM(会锁表) 官方网址http:// ...
- ETL全量多表同步简述
ETL全量多表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 1.获取同步表名如下图: 2.循环迁移数据如 ...
- ETL全量单表同步简述
ETL全量单表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 注意点: 1.数据库合并时,选择正确的数据源 ...
- mysql全量和增量备份详解(带脚本)
在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 下面对这种备份方案详细说明下:1.MySQLdump增量备份配置执行增量备份的前提条件是M ...
随机推荐
- 鸿蒙NEXT元服务:利用App Linking实现无缝跳转与二维码拉起
[效果] 元服务链接格式(API>=12适用):https://hoas.drcn.agconnect.link/ggMRM 生成二维码后效果: [参考网址] 使用App Linking实现 ...
- fastadmin表格 - 自定义接口
1.文本过长溢出 文本超过250px则隐藏,如果需要修改此宽度,请在具体页面中重新定义formatter方法 点击通过弹窗展示完整的内容 弹窗插件使用Layer.js 调用方法 {field: 'co ...
- 树莓派4B 关闭休眠,关闭屏保
1.安装 sudo apt install xscreensaver 2.打开xscreensaver sudo xscreensaver-demo 3.设置 参考:https://zhuanlan. ...
- 对象存储COS-数据处理能力升级!“组合拳”助力存储新时代!
近日腾讯云对象存储(COS)完成了"存储"到"存储+"的升级! 互联网让信息传播的更快,人们仿佛对信息更加渴望,我们身边的产品越来越多,获取信息的类型也丰富多样 ...
- Macos 安装md5sum、sha1sum、md5deep、sha1deep
一.安装md5sum和sha1sum 方法一:brew 安装 # brew install md5sha1sum 方法二:编译安装 源码下载地址:http://www.microbrew.org/to ...
- Unity 3D简单使用C#脚本,脚本的生命周期
Unity 3D简单使用 新建项目->层级里右键->创建空对象改名Test 项目里右键创建C#脚本Test 双击脚本Test(所有脚本都会继承MonoBehaviour类),在Start( ...
- UdpClient.BeginReceive(AsyncCallback, Object) 方法
命名空间: System.Net.Sockets 程序集: System.Net.Sockets.dll 从远程主机异步接收数据报. public IAsyncResult BeginReceive ...
- 不为人知的网络编程(十二):彻底搞懂TCP协议层的KeepAlive保活机制
文中引用了参考资料中的部分内容,本文参考资料详见文末"参考资料"一节,感谢资料分享者. 1.引言 对于IM开发者而言,网络保活这件事再熟悉不过了,比如这是我最近一篇有关网络保活话题 ...
- Python 元类(Meta Class):解密 Python 面向对象编程的幕后推手
在 Python 编程中,我们每天都在和类打交道,但是你是否也和我一样想过:类本身是什么?是谁创建了类?元类(Meta Class)就是用来创建类的"类".今天让我们一起深入理解这 ...
- CDS标准视图:维护活动类型 I_MaintenanceActivityType
视图名称:维护活动类型 I_MaintenanceActivityType 视图类型:基础 视图代码: 点击查看代码 @ObjectModel.supportedCapabilities: [ #AN ...