全部产品
Search
文档中心

实时计算Flink版:数据摄入常见问题和解决方案

更新时间:Jul 14, 2026

本文介绍数据摄入作业中的常见问题与解决方案。

快照阶段执行Checkpoint时报错,JobMananger内存不足

影响面

  • 此问题影响使用MySQL Source的Flink CDC数据摄入作业。

  • 此问题可能在使用任意实时计算VVR引擎版本的作业中出现。

异常表现

  • 任务在全量快照阶段频繁异常重启,查看JobManager日志可见包含OutOfMemory内存不足错误栈。

  • 在监控告警界面的数据摄入相关指标中,可以看到“Num of remaining SnapshotSplits”和“Num of processed SnapshotSplits”的总数非常多。

image

异常根因

在MySQL Source执行全量阶段快照时,需要将全部分片的元数据信息持久化保存到状态中。在作业数据量较大、或是分片大小较小时,JM会切分出产生大量需要读取的分片,导致出现OutOfMemory的报错。

解决方案

  • 增大JobManager分配的内存资源数量。

  • 调整运行参数 jobmanager.memory.heap.sizejobmanager.memory.off-heap.size,增大JobManager可使用的堆内及堆外内存。

作业增量阶段从状态恢复时失败,JobMananger内存不足

影响面

  • 此问题影响使用MySQL Source的Flink CDC数据摄入作业。

  • 此问题影响使用实时计算VVR 11.1及更低版本的作业。

异常表现

  • 任务已经进入增量阶段,但在从状态中恢复时JobManager报错,日志提示内存不足。

异常根因

实时计算VVR 11.1及更低版本引擎在全量切换到增量阶段之后,有可能无法正确清理状态中持久化保存的表结构信息,导致从Checkpoint恢复时内存不足。

解决方案

  • 升级实时计算Flink引擎到VVR 11.2或更高版本。

快照即将结束时作业失败,TaskManager内存不足

影响面

  • 此问题影响使用MySQL Source的Flink CDC数据摄入作业。

  • 此问题可能在使用任意实时计算VVR引擎版本的作业中出现。

异常表现

  • MySQL全量阶段即将结束,只剩下少数几个分片未处理时作业 OOM。

  • 在TaskManager 的日志中搜索using select statement关键字,发现最后一个无界查询中包含大量数据。

异常根因

全量阶段读取的时间过长,因此最后一个分片积累了大量需要读取的增量数据,导致消费该分片数据时内存不足。

解决方案

  • 设置MySQL Source的scan.incremental.snapshot.unbounded-chunk-first.enabled: true参数,并重新进行快照。

使用 pt-osc 等无锁变更工具变更表结构后,无数据输出

影响面

  • 此问题影响使用MySQL Source的Flink CDC数据摄入作业。

  • 此问题影响使用实时计算VVR 11.1及更低版本的作业。

异常表现

  • 作业在执行无所表结构变更后持续运行,无异常重启;

  • 监控告警中的CurrentFetchTimeLag正常推进;

  • MySQL Source无数据输出,CurrentEmitTimeLag也不再更新。

异常根因

早期版本不支持无锁表结构变更工具产生的DDL变更事件。

解决方案

  • 升级实时计算Flink引擎到11.2或更高版本;

  • 设置MySQL Source的scan.parse.online.schema.changes.enabled: true参数。

使用 pt-osc 等无锁变更工具变更表结构后,作业Failover

影响面

  • 此问题影响使用MySQL Source的Flink CDC数据摄入作业。

  • 此问题影响使用实时计算VVR 11.1及更低版本的作业。

异常表现

  • 作业在执行无所表结构变更后异常重启,Transform算子报错列类型不匹配。

异常根因

实时计算Flink引擎VVR 11.1版本存在已知问题,在无锁表结构变更的同时插入大量数据,有概率导致下发无法解析的事件。

解决方案

  • 升级实时计算Flink引擎到11.2或更高版本,并从无锁表结构变更前的快照重启。

从表结构变更前的快照恢复作业报错

影响面

  • 此问题影响使用MySQL Source的Flink CDC数据摄入作业。

  • 此问题影响使用实时计算VVR 11.1及更低版本的作业。

异常表现

  • 从历史快照有状态重启,且执行快照后又发生了表结构变更。

  • 作业消费Binlog时抛出异常,提示表结构不匹配。

异常根因

实时计算Flink引擎VVR 11.1及更早版本不支持从表结构不兼容的位点做有状态启动。

解决方案

升级实时计算Flink引擎到11.2或更高版本,即可从表结构变更前的快照重启。

Flink CDC 作业全量阶段与增量阶段对 Binlog 保留时间有什么要求?

影响面

  • 此问题影响使用 MySQL Source 的 Flink CDC 数据摄入作业。

  • 此问题可能在使用任意实时计算 VVR 引擎版本的作业中出现。

异常表现

  • 作业在全量阶段异常失败,日志提示 Binlog 文件不存在或已过期。

  • 全量阶段数据同步出现漏同步或数据不一致。

异常根因

Flink CDC 作业在全量阶段和增量阶段对 Binlog 的消费位点要求不同:

  • 全量阶段:Flink CDC 在读取全量历史快照数据的同时,记录快照开始时的 Binlog 位点。全量阶段完成后,需从该位点消费 Binlog 以补齐快照期间的增量数据。由于全量阶段耗时较长,快照开始时的 Binlog 可能已被数据库的 Binlog 保留策略清理,导致同步失败。

  • 增量阶段:作业消费较新的 Binlog,通常不受 Binlog 过期清理策略的影响。

解决方案

  1. 确认作业当前所处的消费阶段。在监控告警页面查看数据摄入相关指标,若"Num of remaining SnapshotSplits"大于 0,则说明作业仍处于全量阶段。

  2. 对于因 Binlog 被清理导致的全量阶段失败,建议执行以下操作:

    • 无状态重启作业,并适当增加作业并发数以提升全量阶段的处理速度,缩短全量阶段耗时。

    • 延长数据库的 Binlog 保留时间,确保全量阶段完成前 Binlog 不被清理。

    • 检查并调整启动位点配置,合理设置 Binlog 启动位点。