Re:Re: 采集mysql全量的时候出现oom问题
是的,分片比较大,有一万七千多个分片 jm内存目前是2g,我调整到4g之后还是会有这么问题,我在想如果我一直调整jm内存,后面增量的时候内存会有所浪费,在flink官网上找到了flink堆内存的相关参数,但是对这个不太了解,不知道具体该怎么调试合适,麻烦帮忙看一下如下图这些参数调整那个合适呢? flink官网地址为: https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/deployment/memory/mem_setup_jobmanager/ | Component | Configuration options | Description | | JVM Heap | jobmanager.memory.heap.size | JVM Heap memory size for job manager. | | Off-heap Memory | jobmanager.memory.off-heap.size | Off-heap memory size for job manager. This option covers all off-heap memory usage including direct and native memory allocation. | | JVM metaspace | jobmanager.memory.jvm-metaspace.size | Metaspace size of the Flink JVM process | | JVM Overhead | jobmanager.memory.jvm-overhead.min jobmanager.memory.jvm-overhead.max jobmanager.memory.jvm-overhead.fraction | Native memory reserved for other JVM overhead: e.g. thread stacks, code cache, garbage collection space etc, it is a capped fractionated component of the total process memory | 在 2024-04-09 11:28:57,"Shawn Huang" 写道: 从报错信息看,是由于JM的堆内存不够,可以尝试把JM内存调大,一种可能的原因是mysql表全量阶段分片较多,导致SourceEnumerator状态较大。 Best, Shawn Huang wyk 于2024年4月8日周一 17:46写道: 开发者们好: flink版本1.14.5 flink-cdc版本 2.2.0 在使用flink-cdc-mysql采集全量的时候,全量阶段会做checkpoint,但是checkpoint的时候会出现oom问题,这个有什么办法吗? 具体报错如附件文本以及下图所示:
Re:RE: Re:RE: binlog文件丢失问题
您好: 我确认我们两台mysql备库都开启了gtid选项,并且该问题我们进行了复现,复现步骤如下: flink版本 1.14.5 flink-connector-mysql-cdc版本 2.2.0 mysql版本 5.6.0 1.准备两台备库,并且binlog文件名相差很远没有交集 2.采集第一台备库,等待数据正常写入后,停止该cdc采集任务,正常保存savepoint 3.修改采集mysql的配置信息为备库2,并且将flink任务正常从savepoint启动,就会出现上述反馈的问题 在 2024-01-19 20:36:10,"Jiabao Sun" 写道: >Hi, > >日志中有包含 GTID 的内容吗? >用 SHOW VARIABLES LIKE 'gtid_mode’; 确认下是否开启了GTID呢? > >Best, >Jiabao > > >On 2024/01/19 09:36:38 wyk wrote: >> >> >> >> >> >> >> >> >> >> 抱歉,具体报错和代码如下: >> >> >> 报错部分: >> Caused by: java.lang.IllegalStateException: The connector is trying to read >> binlog starting at >> Struct{version=1.5.4.Final,connector=mysql,name=mysql_binlog_source,ts_ms=1705645599953,db=,server_id=0,file=mysql_bin.007132,pos=729790304,row=0}, >> but this is no longer available on the server. Reconfigure the connector to >> use a snapshot when needed. >> at >> com.ververica.cdc.connectors.mysql.debezium.task.context.StatefulTaskContext.loadStartingOffsetState(StatefulTaskContext.java:179) >> at >> com.ververica.cdc.connectors.mysql.debezium.task.context.StatefulTaskContext.configure(StatefulTaskContext.java:112) >> at >> com.ververica.cdc.connectors.mysql.debezium.reader.BinlogSplitReader.submitSplit(BinlogSplitReader.java:93) >> at >> com.ververica.cdc.connectors.mysql.debezium.reader.BinlogSplitReader.submitSplit(BinlogSplitReader.java:65) >> at >> com.ververica.cdc.connectors.mysql.source.reader.MySqlSplitReader.checkSplitOrStartNext(MySqlSplitReader.java:170) >> at >> com.ververica.cdc.connectors.mysql.source.reader.MySqlSplitReader.fetch(MySqlSplitReader.java:75) >> at >> org.apache.flink.connector.base.source.reader.fetcher.FetchTask.run(FetchTask.java:58) >> at >> org.apache.flink.connector.base.source.reader.fetcher.SplitFetcher.runOnce(SplitFetcher.java:142) >> ... 6 more >> >> >> >> >> 代码部分: >> if (!isBinlogAvailable(mySqlOffsetContext)) { >> throw new IllegalStateException( >> "The connector is trying to read binlog starting at " >> + mySqlOffsetContext.getSourceInfo() >> + ", but this is no longer " >> + "available on the server. Reconfigure the connector to >> use a snapshot when needed."); >> } >> >> 在 2024-01-19 17:33:03,"Jiabao Sun" 写道: >> >Hi, >> > >> >你的图挂了,可以贴一下图床链接或者直接贴一下代码。 >> > >> >Best, >> >Jiabao >> > >> > >> >On 2024/01/19 09:16:55 wyk wrote: >> >> >> >> >> >> 各位大佬好: >> >> 现在有一个binlog文件丢失问题,需要请教各位,具体问题描述如下: >> >> >> >> >> >> 问题描述: >> >> 场景: 公司mysql有两个备库: 备库1和备库2。 >> >> 1. 现在备库1需要下线,需要将任务迁移至备库2 >> >> 2.我正常将任务保存savepoint后,将链接信息修改为备库2从savepoint启动,这个时候提示报错binlog文件不存在问题,报错截图如下图一 >> >> 3.我根据报错找到对应代码(如下图二)后,发现是一块校验binlog文件是否存在的逻辑,我理解的是我们从gtid启动不需要对binlog文件进行操作,就将这部分代码进行了注释,任务能够正常从savepoint启动,并且数据接入正常 >> >> >> >> >> >> >> >> >> >> 疑问: 想问一下校验binlog文件是否存在这块逻辑是否需要,或者是应该修改为校验gtid是否存在,期待您的回复,谢谢 >> >> >> >> >> >> 注意: 备库一个备库二的gtid是保持一致的 >> >> >> >> >> >> >> >> >> >> 图一: >> >> >> >> >> >> 图二: >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>
Re:RE: binlog文件丢失问题
抱歉,具体报错和代码如下: 报错部分: Caused by: java.lang.IllegalStateException: The connector is trying to read binlog starting at Struct{version=1.5.4.Final,connector=mysql,name=mysql_binlog_source,ts_ms=1705645599953,db=,server_id=0,file=mysql_bin.007132,pos=729790304,row=0}, but this is no longer available on the server. Reconfigure the connector to use a snapshot when needed. at com.ververica.cdc.connectors.mysql.debezium.task.context.StatefulTaskContext.loadStartingOffsetState(StatefulTaskContext.java:179) at com.ververica.cdc.connectors.mysql.debezium.task.context.StatefulTaskContext.configure(StatefulTaskContext.java:112) at com.ververica.cdc.connectors.mysql.debezium.reader.BinlogSplitReader.submitSplit(BinlogSplitReader.java:93) at com.ververica.cdc.connectors.mysql.debezium.reader.BinlogSplitReader.submitSplit(BinlogSplitReader.java:65) at com.ververica.cdc.connectors.mysql.source.reader.MySqlSplitReader.checkSplitOrStartNext(MySqlSplitReader.java:170) at com.ververica.cdc.connectors.mysql.source.reader.MySqlSplitReader.fetch(MySqlSplitReader.java:75) at org.apache.flink.connector.base.source.reader.fetcher.FetchTask.run(FetchTask.java:58) at org.apache.flink.connector.base.source.reader.fetcher.SplitFetcher.runOnce(SplitFetcher.java:142) ... 6 more 代码部分: if (!isBinlogAvailable(mySqlOffsetContext)) { throw new IllegalStateException( "The connector is trying to read binlog starting at " + mySqlOffsetContext.getSourceInfo() + ", but this is no longer " + "available on the server. Reconfigure the connector to use a snapshot when needed."); } 在 2024-01-19 17:33:03,"Jiabao Sun" 写道: >Hi, > >你的图挂了,可以贴一下图床链接或者直接贴一下代码。 > >Best, >Jiabao > > >On 2024/01/19 09:16:55 wyk wrote: >> >> >> 各位大佬好: >> 现在有一个binlog文件丢失问题,需要请教各位,具体问题描述如下: >> >> >> 问题描述: >> 场景: 公司mysql有两个备库: 备库1和备库2。 >> 1. 现在备库1需要下线,需要将任务迁移至备库2 >> 2.我正常将任务保存savepoint后,将链接信息修改为备库2从savepoint启动,这个时候提示报错binlog文件不存在问题,报错截图如下图一 >> 3.我根据报错找到对应代码(如下图二)后,发现是一块校验binlog文件是否存在的逻辑,我理解的是我们从gtid启动不需要对binlog文件进行操作,就将这部分代码进行了注释,任务能够正常从savepoint启动,并且数据接入正常 >> >> >> >> >> 疑问: 想问一下校验binlog文件是否存在这块逻辑是否需要,或者是应该修改为校验gtid是否存在,期待您的回复,谢谢 >> >> >> 注意: 备库一个备库二的gtid是保持一致的 >> >> >> >> >> 图一: >> >> >> 图二: >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>
binlog文件丢失问题
各位大佬好: 现在有一个binlog文件丢失问题,需要请教各位,具体问题描述如下: 问题描述: 场景: 公司mysql有两个备库: 备库1和备库2。 1. 现在备库1需要下线,需要将任务迁移至备库2 2.我正常将任务保存savepoint后,将链接信息修改为备库2从savepoint启动,这个时候提示报错binlog文件不存在问题,报错截图如附件内图一 3.我根据报错找到对应代码(如附件内图二)后,发现是一块校验binlog文件是否存在的逻辑,我理解的是我们从gtid启动不需要对binlog文件进行操作,就将这部分代码进行了注释,任务能够正常从savepoint启动,并且数据接入正常 疑问: 想问一下校验binlog文件是否存在这块逻辑是否需要,或者是应该修改为校验gtid是否存在,期待您的回复,谢谢 注意: 备库一个备库二的gtid是保持一致的
binlog文件丢失问题
各位大佬好: 现在有一个binlog文件丢失问题,需要请教各位,具体问题描述如下: 问题描述: 场景: 公司mysql有两个备库: 备库1和备库2。 1. 现在备库1需要下线,需要将任务迁移至备库2 2.我正常将任务保存savepoint后,将链接信息修改为备库2从savepoint启动,这个时候提示报错binlog文件不存在问题,报错截图如下图一 3.我根据报错找到对应代码(如下图二)后,发现是一块校验binlog文件是否存在的逻辑,我理解的是我们从gtid启动不需要对binlog文件进行操作,就将这部分代码进行了注释,任务能够正常从savepoint启动,并且数据接入正常 疑问: 想问一下校验binlog文件是否存在这块逻辑是否需要,或者是应该修改为校验gtid是否存在,期待您的回复,谢谢 注意: 备库一个备库二的gtid是保持一致的 图一: 图二: