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

Flink CDC 没有设置mysql断开重连 是否存在一定时间内自动关闭连接?

Flink CDC ,监听binlog,没有设置mysql断开重连 是否存在一定时间内自动关闭连接?导致数据同步失败

展开
收起
JWRRR 2023-04-03 15:10:09 624 0
2 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    Flink CDC使用Debezium的MySQL连接器来连接到MySQL数据库,并从binlog中读取数据变化。如果MySQL数据库发生故障或重启,Debezium会自动重连,并从上次断开的位置继续读取数据。这样,Flink CDC可以保证数据的完整性和一致性。

    如果您想要调整MySQL的断开重连策略,您可以通过在Flink CDC表的WITH子句中添加Debezium的相关参数来实现。例如,您可以设置以下参数:

    • database.connection.timeout.ms:指定连接到MySQL数据库时的超时时间,默认为30秒。
    • database.history.recovery.mode:指定当Debezium无法从binlog中恢复历史记录时的行为,可选值为fail(失败)、skip(跳过)、recover(恢复),默认为fail。
    • database.initial.statements:指定连接到MySQL数据库后执行的初始SQL语句,可以用来设置一些连接属性,例如心跳间隔、字符集等。
    2023-04-23 23:26:21
    赞同 展开评论 打赏
  • 存在即是合理

    是的,Flink CDC 没有设置 MySQL 断开重连,而且在默认情况下,MySQL 数据库会在连接空闲时间达到一定阈值时自动关闭连接,以节省资源和提高性能。

    这个阈值可以通过 MySQL 数据库参数 wait_timeout 来设置,默认为 8 小时。也就是说,如果连接在 8 小时内没有任何活动,MySQL 数据库就会关闭连接。这可能会导致 Flink CDC 在连接空闲时断开与 MySQL 数据库的连接,从而导致数据丢失。

    为了解决这个问题,可以在 Flink CDC 中设置连接池的最大空闲时间 maxIdleTime,确保连接在空闲时仍然保持活动状态。例如,可以将 maxIdleTime 设置为小于 wait_timeout,以确保连接在 MySQL 数据库关闭之前被使用。

    另外,如果 Flink CDC 在处理数据时发生错误并导致连接关闭,可以通过 Flink CDC 的异常处理机制来重试连接并恢复数据同步。

    2023-04-07 15:01:05
    赞同 展开评论 打赏

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

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
    One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
    如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

    相关镜像