flink1.14.4,cdc 2.2.1 , mysql 8.0;任务从savepoint恢复时使用scan_newly_add_tables功能。新增的表在正常扫描若干chunk以后就卡住了,既不同步新增表的全量数据,也不再监听增量数据。jobManger和taskManager都没有异常日志。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
问题描述: 用户在使用Flink 1.14.4、MySQL CDC Connector 2.2.1以及MySQL 8.0的环境下,从savepoint恢复任务时启用了scan_newly_add_tables
功能。然而,新增的表在被正常扫描一段时间后停止同步,既不继续全量数据的加载,也不再捕获增量变更数据。尽管如此,JobManager和TaskManager均未显示异常日志。
背景信息:
可能的原因与解决方案:
原因1:Checkpoint间隔时间设置不当 全量读到增量读切换时,若Checkpoint间隔过长,可能导致长时间无法进入增量阶段。请检查并调整Checkpoint间隔至合理时间,以确保全量数据写入下游后能及时切换至增量模式。
原因2:并发数与server-id配置不匹配 确认作业并发数不超过配置的server-id范围,并且每个并发有唯一的server-id。如果新增表的读取因资源分配或并发控制问题卡住,应调整并发数设置,并确保server-id配置正确无重叠。
原因3:MySQL实例限制 若使用的是RDS MySQL 5.6只读实例,其binlog可能不含数据,导致无法读取增量。确认使用的MySQL版本和实例类型是否支持所需的CDC功能。
原因4:启动模式配置 检查scan.startup.mode
配置,确认是否正确设置了启动模式以适应全量数据及增量数据的处理需求。对于已存在数据表的增量同步,应确保配置为默认的initial
或其他适合增量读取的模式。
排查无声错误: 虽然JobManager和TaskManager没有直接报错,但建议检查Source Task的日志详细信息,可能存在更细致的警告或提示信息,如网络延迟、连接超时等,这些都可能是导致任务暂停的原因。
操作步骤:
server-id
范围与作业并发数设置,确保二者匹配且符合要求。scan.startup.mode
配置正确,根据实际需要进行调整。注意事项:
总结: 问题可能源于Checkpoint配置、并发控制、MySQL实例限制或启动模式设置不当。通过上述步骤逐一排查并调整,可以定位并解决新增表同步停滞的问题。同时,深入分析日志文件对识别隐藏问题至关重要。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。