Flink CDC 2.2升级到2.3,各位大佬是咋升级的啊,cdc2.2模式INITIAL下ck,然后2.3恢复会报错,2.3没有INITIAL了?https://github.com/ververica/flink-cdc-connectors/issues/1757
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在将 Flink CDC 从 2.2 版本升级到 2.3 版本时,您提到在 2.2 中使用 INITIAL
模式进行 Checkpoint(CK),然后在 2.3 中恢复时会报错,并且发现 2.3 中不再支持 INITIAL
模式。以下是针对该问题的详细分析和解决方案。
Flink CDC 2.3 对启动模式进行了调整,移除了 INITIAL
模式。这意味着在 2.3 中无法直接恢复基于 INITIAL
模式的 Checkpoint 数据。这种变更可能导致以下问题: - 如果您的作业在 2.2 中以 INITIAL
模式运行并生成了 Checkpoint,在升级到 2.3 后尝试恢复时,可能会因为模式不兼容而报错。 - 报错的原因是 2.3 不再支持 INITIAL
模式,导致无法正确解析 Checkpoint 中的元数据。
在升级前,请确认您的作业是否依赖 INITIAL
模式。如果确实使用了 INITIAL
模式,建议按照以下步骤进行迁移:
备份现有 Checkpoint 数据
在升级之前,确保对现有的 Checkpoint 数据进行完整备份,以便在升级失败时可以回滚。
切换到兼容的启动模式
在 2.3 中,推荐使用以下启动模式替代 INITIAL
模式:
earliest-offset
:从最早的 Binlog 位点开始读取。latest-offset
:从最新的 Binlog 位点开始读取。specific-offset
:从指定的 Binlog 位点开始读取。timestamp
:从指定的时间戳开始读取 Binlog 事件。示例配置:
CREATE TABLE mysql_source (
...
) WITH (
'connector' = 'mysql-cdc',
'scan.startup.mode' = 'earliest-offset' -- 替代 INITIAL 模式
);
重新生成快照
如果必须保留全量数据,可以在升级后手动触发一次全量快照(Snapshot)。具体操作如下:
earliest-offset
或其他兼容模式。在升级过程中,确保 Checkpoint 配置与新版本兼容。例如: - 确保 Checkpoint 的存储路径一致。 - 检查是否有依赖的第三方库冲突,尤其是 flink-sql-connector
和 flink-connector
的版本差异。
Flink CDC 2.3 可能引入了新的依赖或移除了旧的依赖。为了避免依赖冲突,请执行以下操作: 1. 检查依赖版本
确保使用的 flink-sql-connector
和 flink-connector
版本与 Flink 引擎版本匹配。例如:
<dependency>
<groupId>com.ververica</groupId>
<artifactId>flink-connector-mysql-cdc</artifactId>
<version>2.3.x</version>
</dependency>
org.codehaus.janino
),可以通过以下方式解决:
classloader.parent-first-patterns.additional
配置:
classloader.parent-first-patterns.additional: org.codehaus.janino
provided
作用域声明 Flink 相关依赖:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.11</artifactId>
<scope>provided</scope>
</dependency>
避免直接升级生产环境
在正式升级前,建议在测试环境中验证升级流程,确保新版本的兼容性和稳定性。
关注 MySQL Binlog 配置
如果您的作业需要长时间运行,请确保 MySQL 的 Binlog 保留时间足够长,避免因 Binlog 文件被清理导致数据丢失。例如:
SET GLOBAL expire_logs_days = 7;
检查主键配置
在 2.3 中,启用增量快照功能(scan.incremental.snapshot.enabled
)时,表必须定义主键。如果表缺少主键,可能会导致以下错误:
The primary key is necessary when enable 'Key: 'scan.incremental.snapshot.enabled'
解决方法是为表添加主键,或者禁用增量快照功能。
通过以上步骤,您可以顺利完成 Flink CDC 从 2.2 到 2.3 的升级。关键点包括: 1. 替换 INITIAL
模式为兼容的启动模式(如 earliest-offset
)。 2. 调整 Checkpoint 配置,确保与新版本兼容。 3. 解决潜在的依赖冲突,避免运行时异常。
如果您在升级过程中遇到其他问题,可以参考官方文档或联系技术支持获取进一步帮助。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。