大佬们,请教一个问题,我们使用flink cdc 构建的实时数仓。现在遇到一个问题,flink cd

大佬们,请教一个问题,我们使用flink cdc 构建的实时数仓。现在遇到一个问题,flink cdc 订阅的是业务的从库。现在随着数据量的增加,业务需要对相关表进行归档。归档后会删除已归档的数据。而删除操作目前会被flink cdc 捕捉到。社区有没有大佬们有相关的方案解决mysql归档导致影响到数仓的问题?

展开
收起
雪哥哥 2022-11-27 10:40:34 375 发布于浙江 分享
分享
版权
举报
阿里云 AI 助理回答

面对您提到的问题,即Flink CDC在订阅MySQL从库时捕捉到归档删除操作导致影响实时数仓的场景,可以采取以下策略来解决:

问题描述

  • 在使用Flink CDC构建实时数仓的过程中,由于业务需求对MySQL数据库进行数据归档并删除已归档数据,这些删除操作被Flink CDC捕获,进而影响到实时数仓的数据完整性或产生不必要的处理负担。

解决方案

1. 过滤删除事件

  • 步骤1:在配置Flink CDC MySQL源时,利用Debezium提供的filter功能,过滤掉DELETE类型的事件。这样,即使MySQL中执行了删除操作,Flink作业也不会消费这些删除事件,从而避免影响实时数仓。

    示例代码片段:

    properties.setProperty("debezium.source.filter.drops.deletes", "true");
    

2. 使用中间层解耦

  • 步骤2:考虑在MySQL与Flink之间引入Kafka作为中间消息队列。所有MySQL的变更(包括归档删除)先同步至Kafka,然后Flink作业消费Kafka中的消息。这种方式可以有效解耦,便于后续对消息做进一步筛选或处理,比如在Flink作业中直接忽略或转换归档删除相关的消息。

3. 归档标识处理

  • 步骤3:在业务端进行数据归档时,不直接删除数据,而是为数据添加一个归档标识字段,如is_archived。Flink作业在处理数据时,根据此标识决定是否将数据写入实时数仓或进行相应归档逻辑处理。这样既能保留历史数据,又不会因直接删除而干扰实时数仓。

注意事项

  • 数据一致性:确保在实施上述方案时,考虑到数据一致性和时效性的影响。
  • 资源规划:引入Kafka会增加系统的复杂度和运维成本,需合理规划资源与监控。
  • 测试验证:在生产环境应用前,务必在测试环境中充分验证方案的有效性和稳定性。

通过上述方法,您可以有效地应对MySQL归档操作对基于Flink CDC构建的实时数仓带来的影响,保证数据处理流程的稳定性和数据的准确性。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

收录在圈子:
实时计算 Flink 版(Alibaba Cloud Realtime Compute for Apache Flink,Powered by Ververica)是阿里云基于 Apache Flink 构建的企业级、高性能实时大数据处理系统,由 Apache Flink 创始团队官方出品,拥有全球统一商业化品牌,完全兼容开源 Flink API,提供丰富的企业级增值功能。
还有其他疑问?
咨询AI助理
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等