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

实时计算Flink报错The connector is trying to read binlog

已解决

实时计算Flink报错The connector is trying to read binlog xxx use a snapshot when needed.

展开
收起
阿里云服务支持 2022-12-19 10:47:18 390 0
1 条回答
写回答
取消 提交回答
  • 官方回答

    该报错的原因是作业处理的速度追不上binlog产生的速度,导致正在读的位点被清理了。 目前只能清理状态重启。

    ● 场景1: rds做了内部迁移操作,flink jar作业使用mysql cdc消费mysql数据。

    报错原因:是作业处理的速度追不上mysql binlog 产生的速度,导致正在读的位点被清理了。
    
    排查思路:
    

    先确认rds的地址和binlog文件位点和迁移前是否一致:

    (1)rds 地址不会变化

    (2)如果节点有变化,binlog文件位点会变化。如果是从远程拉取的oss中的binlog,binlog是固定的。

    解决方案:
    
    (1)重新读取:flink cdc不会到oss上拉文件,是直链mysql服务器(无状态重启)。
    
    (2)绕行方案:从只读库拉取数据。 
    
    注意事项:
    
    (1)从库读是支持的,从库延时比主库大点。注意RDS MySQL 5.6不支持,5.7之后的版本都支持,因为RDS MySQL 5.6 只读实例的binlog文件是简化过的,没有数据。
    
    (2)主库风险也还好,flink cdc 只有读的权限,不会加锁和写的权限。如果rds配置了HA,即多主实例,用户同时开启了GTID,然后通过VIP/DNS下挂rds的几个多主实例地址,这样flink cdc /canal 这些同步工具通过访问 VIP/DNS 链接rds时才能实现不中断。
    

    ● 场景2:RDS有日志保留策略,最长18个小时,最大占用30%存储空间,两个条件谁先满足都会触发删除,如果写入特别多,超过30%的存储空间,可能binlog日志1小时就删除了。注意:rds页面上还有一个7天的binlog文件保存,这个是rds后台转存到oss上的,flink cdc目前是没有去转存后oss上去读取这些文件的。

    ● 场景3:volvo通过只读实例消费CDC数据,RDS的只读实例不保证binlog(本地只保留10s,上传oss),所以flink cdc侧不建议连接 RDS 的只读实例。只读实例一旦作业 Failover 10s 内恢复不过来,就会有这个异常只读实例判定,rr开头的就是只读实例rm开头的就是正常的实例。

    2022-12-19 10:53:06
    赞同 展开评论 打赏

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

相关产品

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

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