Flink CDC报The connector is trying to read binlog starting at xxx but this is no longer available问题解决

这篇具有很好参考价值的文章主要介绍了Flink CDC报The connector is trying to read binlog starting at xxx but this is no longer available问题解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

问题是笔者最近在使用FlinkCDC2.3.0捕获MySQL binlog日志时遇到的,MySQL使用的阿里云的RDS,MysqlCDC使用读账号以Initinal模式,任务已经运行了一段时间突然报的错,之前在使用FlinkCDC时也曾遇到过,设置了一些参数后没有再出现过,一直比较忙没有来得及总结下来。但是今天同事又遇到了同类型新的报错形式。下次也将问题记录下来备忘,同时也希望对大家有帮助。

问题

报错:Caused by: java.lang.IllegalStateException: The connector is trying to read binlog starting at Struct{version=1.6.4.Final,connector=mysql,name=mysql_binlog_source,ts_ms=1686104185098,db=,server_id=0,file=mysql-bin.000702,pos=1255923,row=0}, but this is no longer available on the server. Reconfigure the connector to use a snapshot when needed.

详细报错如下:
Flink CDC报The connector is trying to read binlog starting at xxx but this is no longer available问题解决,cdc,Flink,flink,java,大数据,mysql,binlog

分析

很多FlinkCDC的报错中都会有SplitFetcher thread 0 received unexpected exception while polling the record这样一句提示,虽然这是同一功能报错,但是容易对大家造成困惑。
在网上寻求帮助时也造成了麻烦。下面我们来分析这个报错,首先我们来了解下struct中的数据信息的含义,其实它是MySQL binlog source的元数据信息,那他的参数都是啥玩意呢

{
	version=1.6.4.Final,
	connector=mysql,
	name=mysql_binlog_source,
	ts_ms=1686104185098,
	db=,server_id=0,
	file=mysql-bin.000702,
	pos=1255923,
	row=0
}

version:该binlog source使用的Debezium版本号,
connector:该binlog source所使用的Debezium connector类型
name:该binlog source的名称,
ts_ms:表示该操作发生的时间戳(毫秒级别),
db:表示该操作所在的数据库,
server_id:表示执行该操作的MySQL服务器ID,
file:表示该操作所在的二进制日志文件名,
pos:表示该操作在该文件中的位置,
row:表示该操作影响的行数。

看到这里我们知道了这是FlinkCDC在读取的mysqlbinlong时在尝试读取mysql-bin.000702文件,偏移量为1255923点位时出问题了,这些参数可以帮助我们定位该数据的位置。出啥问题了呢?我们继续看报错,报错说这个点位的快照在当前库中已经不可以用了,那么binlog啥情况下不可用呢,就是被删了或者丢了情况下不可以用
那么我们分析什么情况下binlog会被删掉呢?这就要看我们数据库的备份保留策略了,于是我们查看了阿里云RDS上的日志备份保留策略。
Flink CDC报The connector is trying to read binlog starting at xxx but this is no longer available问题解决,cdc,Flink,flink,java,大数据,mysql,binlog
我们发现日志保留7天,但是下面还有一个本地日志保留策略就是本地的日志只会保留18个小时,时间一到就会删除另外如果文件保留个数到达60个也会删除,还有就是占用空间30%也会被删除。但是我们分析了一下并没有符合这些条件。于是我在社区沟通了一下,总结情况如下:

  • 场景1: RDS做了内部迁移操作,flink jar作业使用mysql cdc消费mysql数据报错的原因是作业处理的速度追不上mysql binlog 产生的速度,导致正在读的位点被清理了
  • 场景 2: RDS有日志保留策略,最长18个小时,最大占用30%存储空间,两个条件谁先满足都会触发删除,如果你写入特别多,超过30%的存储空间了,可能binlog日志1小时就删除了
  • 场景 3: 通过只读实例消费 CDC 数据,RDS的只读实例不保证binlog(本地只保留10s,上传oss),所以 flink cdc 侧不建议连接 RDS 的只读实例。只读实例一旦作业 Failover 10s 内恢复不过来,就会有这个异常。只读实例判定,rr 开头的就是只读实例 rm 开头的就是正常的实例。
    同时我们在FlinkCDC官方问题集找到了该问题部分提示。也是让查找binlog策略。
    Flink CDC报The connector is trying to read binlog starting at xxx but this is no longer available问题解决,cdc,Flink,flink,java,大数据,mysql,binlog

解决方案

经过上述的了解我们大体知道我们三种场景都有可能出现,问题基本上就是mysql的binlog被清理掉了,CDC找不到点位就报错了,对于这种情况我们如下三个操作:

  • 分析了任务的背压,减少上游source任务的并行度,增加了下游任务的并行度,来缓解背压,加快任务处理速度。
  • 同时过滤掉计算中不需要的数据,来减少数据体量。以加快任务进度。
    通过上述操作缓解场景1、场景2。
  • 另一个方面,我们将读账号替换为写账号,
    防止场景3的情况。
  • 最后针对场景2这种FlinkCDC和阿里云RDS备份策略存在兼容性问题造成的bug,我们直接进行了全状态重启(即在Initinal模式下重启任务)以此跳过数据被删除的binlog的点位。

总结

在FlinkCDC的issues,我见到了比较多的人提了问题,官方建议mysql 侧 binlog文件日期保留长点但是,依然解决不了问题。并且对于读账号问题10s问题阿里云官方并未说明,笔者也是咨询大佬才了解到。社区有人建议试试加这个配置笔者尚未实践debeziumProperties.put("snapshot.mode", "when_needed");,之后考虑加一下试试。如果大家和笔者一样实在没有办法就选择重启吧。FlinkCDC对这个问题的优化并没有很好。文章来源地址https://www.toymoban.com/news/detail-729273.html

到了这里,关于Flink CDC报The connector is trying to read binlog starting at xxx but this is no longer available问题解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flink CDC系列之:Oracle CDC Connector

    2023年08月23日
    浏览(50)
  • Flink Oracle CDC Connector源码解读

    flink cdc是在flink的基础上对oracle的数据进行实时采集,底层使用的是debezium框架来实现,debezium使用oracle自带的logminer技术来实现。logminer的采集需要对数据库和采集表添加补充日志,由于oracle18c不支持对数据添加补充日志,所以目前支持的oracle11、12、19三个版本。 flink oracle

    2024年02月02日
    浏览(43)
  • Flink CDC 基于mysql binlog 实时同步mysql表

    环境说明: flink 1.15.2 mysql 版本5.7    注意:需要开启binlog,因为增量同步是基于binlog捕获数据 windows11 IDEA 本地运行 先上官网使用说明和案例:MySQL CDC Connector — Flink CDC documentation 1. mysql开启binlog (注意,引擎是 InnoDB,如果是ndbcluster,本人测试是捕获不到binlog日志的,增量相

    2024年02月10日
    浏览(60)
  • Flink CDC获取mysql 主从分库,分库分表的binlog

    Flink CDC可以获取MySQL主从分库,分库分表的binlog,但是需要注意以下几点: Flink CDC需要配置MySQL的binlog模式为row,以及开启GTID(全局事务标识符),以便正确地识别和处理binlog事件 Flink CDC需要配置MySQL的主从复制关系,以及指定主库或从库的地址,以便正确地连接和读取bin

    2024年02月11日
    浏览(42)
  • 对比flink cdc和canal获取mysql binlog优缺点

    Flink CDC和Canal都是用于获取MySQL binlog的工具,但是有以下几点优缺点对比: Flink CDC是一个基于Flink的库,可以直接在Flink中使用,无需额外的组件或服务,而Canal是一个独立的服务,需要单独部署和运行,增加了系统的复杂度和成本 Flink CDC支持多种数据库的数据变化捕获,如

    2024年02月11日
    浏览(50)
  • Flink CDC 基于mysql binlog 实时同步mysql表(无主键)

    环境说明: flink 1.15.2 mysql 版本5.7    注意:需要开启binlog,因为增量同步是基于binlog捕获数据 windows11 IDEA 本地运行 具体前提设置,请看这篇,包含 binlog 设置、Maven...... Flink CDC 基于mysql binlog 实时同步mysql表_彩虹豆的博客-CSDN博客 经过不懈努力,终于从阿里help页面找到了支

    2024年02月08日
    浏览(47)
  • Failed to start connector [Connector[HTTP/1.1-8080]]

    1、解决Web server failed to start. Port 8080 was already in use 2、SpringBoot启动报错:“Error starting ApplicationContext. To display the conditions report re-run your application with ‘debug’ enabled.” 3、Failed to start end point associated with ProtocolHandler [http-nio-8080] 4、Failed to start connector [Connector[HTTP/1.1-8080]] 提示:

    2024年02月13日
    浏览(46)
  • 第3.4章:StarRocks数据导入--Flink Connector与CDC秒级数据同步

    Flink作为当前流行的流式计算框架,在对接StarRocks时,若直接使用JDBC的方式“流式”写入数据,对StarRocks是不友好的,StarRocks作为一款MVCC的数据库,其导入的核心思想还是“攒微批+降频率”。为此,StarRocks单独开发了flink-connector-starrocks,其内部实现仍是通过对数据缓存攒批

    2023年04月15日
    浏览(78)
  • 60、Flink CDC 入门介绍及Streaming ELT示例(同步Mysql数据库数据到Elasticsearch)-CDC Connector介绍及示例 (1)

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月19日
    浏览(50)
  • MySQL安装中出现的The selected path already exists以及Connector/Python ***以及start service MySQL80 Failed

    近因为学习Python需要用到数据库,选择了MySQl去应用安装,但是安装失败一直困扰着我。可能 也是因为报错的details太多很麻烦所以不想仔细看吧。这几天搞下来也有点心得和大家分享一下。 意思是说你已经创建了文件夹(安装过程会自动创建),我们只需要找到位置给删除

    2024年02月15日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包