请问有没有人遇到过使用MySQL CDC,然后Flink jdbc写Oracle sink, 因为写入出错(Oracle报错)不断重试,导致Oracle连接被耗完?
在使用MySQL CDC和Flink JDBC写入Oracle sink时,可能会遇到连接被耗尽的问题。这通常是因为写操作失败后,Flink会尝试重新连接到Oracle数据库,但是如果连接池中的连接数量不足,就会一直重试,导致连接被耗尽。
为了解决这个问题,可以考虑以下几种方法:
增加Oracle连接池的大小:可以尝试增加Oracle连接池的大小,以便在连接失败后有足够的备用连接可供使用。可以通过修改JDBC驱动程序的属性来设置连接池大小,例如通过在应用程序中设置javax.sql.DataSource
属性来实现。
设置连接超时时间:可以在Flink应用程序中设置连接超时时间,以便在连接无法建立或保持活动一段时间后自动断开连接。这样可以避免无限期地等待连接建立或保持活动而导致连接被耗尽。可以在Flink应用程序中使用org.apache.flink.streaming.api.functions.sink.SinkFunctionBuilder
的handleConnectionFailure
方法来设置连接超时时间。
优化写入操作:可以尝试优化写入操作,以减少写入失败的概率。例如,可以调整写入数据的频率和批量大小,以避免与数据库性能瓶颈之间的竞争。还可以使用更高效的写入方式,例如使用二进制日志格式(Binary Log Format)进行写入,以减少写入失败的可能性。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。