开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink CDC里oracle上要开启归档日志,否则无法cdc,这个怎么处理?

Flink CDC里oracle上要开启归档日志,否则无法cdc,并且开启这个之后,对实际oracle是有很大性能影响,特别是事务。所以oracle cdc在生产环境是无法使用了,没有实际应用价值,测试玩玩也就可以了。这个问题我很早就在群里提出了flink cdc还存在其他的生产环境问题,其一,一般生产环境mysql的binlog会开启滚动日志,也就是为了节省空间,会删除掉之前的binlog,由于source和sink在同一个线程中(如果没有启用并行任务的话),那么当出现back pressure时,可能会导致binlog被删除,而此时,应用由于异常导致重启并从checkpoint重新读取,由于binlog已经被删除,而无法从checkpoint启动的问题。这是我们生产环境中遇到的问题。这是客观存在的问题,从运维角度并不能完全解决问题。应该有个处理机制来解决这种问题。数据量大的情况下,例如我司是一个支付公司,交易量大时无法避免back pressure。我需要一个从应用程序视角解决问题的方法,我们就是一直很高,流水交易非常巨量我们是参考了 TiCDC的处理机制解决了问题,作为flink cdc也需要有个解决方案,另外还遇到一个问题,当sink开启多个parallel tasks后,sink表数据和source表数据不一致。如果恢复为单个task后,sink和source表数据是一致的。如果对key做hash,且key足够分散,数据倾斜会好点,实际生产环境验证过,和默认的差不多。不过这是flink function机制,flink cdc是否考虑默认加一个key selector的机制。

展开
收起
小小鹿鹿鹿 2024-05-01 08:56:12 20 0
1 条回答
写回答
取消 提交回答
  • binlog被删除请调大保存时间,一般是7天,一般超过分钟都需要看看是不是反压了,最好加个告警。超过分钟级的cdc延迟已经是不可接受的了。binlog被删除请调大保存时间,一般是7天,7天内无法修复任务,直接无状态同步就行了。交易量大时 是某个时间段,不可能一直是很高,只要保证binlog的保存时间能在可修复的时间内就行。此回答来自钉群Flink CDC 社区 。

    2024-05-01 13:03:28
    赞同 展开评论 打赏

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

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载

相关镜像