Flink CDC我现在有个这个场景就是监听mysql读出来的数据我会落库到日志表中,但是如果这条数据因为网络原因反正各种原因抛出了异常,虽然有重新执行机制但是有次数限制,打比方3次执行完3次都异常然后监听会停止,这个时候我重新启动监听,那么他不会读我异常的这条数据,而是继续读取新的数据,这样就永远丢失这条数据了,有什么办法或者什么方法可以回滚这种操作之类的吗?
在 Flink CDC 中,当数据处理过程中发生异常时,会自动重试若干次,但如果重试次数达到上限,就会放弃当前记录,并继续处理下一个记录。因此,在这种情况下,您可以考虑以下几种方式来避免数据丢失:
对于Flink CDC的情况,如果在消费数据的过程中发生了异常,并且超过了重试次数,那么Flink CDC并不会自动回滚或者重试。这是因为Flink CDC的设计目标是实时的数据同步,而不是事务性的数据处理。
在这种情况下,你可能需要在业务逻辑层面进行处理。例如,你可以设计一个消息队列系统,将需要消费的数据放入消息队列中。然后在消费数据的过程中,如果出现异常,你可以将数据重新放入消息队列中,等待下一次的消费。
另外,你也可以考虑使用Flink的Checkpoint机制。Checkpoint机制可以帮助你在出现故障时,恢复到最近的Checkpoint状态,从而避免数据丢失。但是需要注意的是,Checkpoint机制可能会增加系统的延迟和开销。
总的来说,你需要根据你的业务需求和系统环境,设计适合你的数据处理流程。
为了解决这个问题,尝试以下方法:
flink-cdc就是保证你不多不少,建议你从上一个执行的检查点继续,报错是绕不过去这个binlog对应的数据吧,从flink官网看哈,但其实你还是绕不过去那个错误的点位,建议全量重跑下,此回答整理自钉群“Flink CDC 社区”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。