各位大佬,flink mysql cdc 2.3 使用earliest-offset对binlog有啥要求么,同步了一段时间发现数据停留在2天前,没有同步到新数据,flink也没有报错?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用 Flink MySQL CDC 2.3 的 earliest-offset 模式时,对 Binlog 的要求和可能的问题分析如下:
earliest-offset 模式的基本要求earliest-offset 模式会跳过全量数据扫描阶段,直接从可读取的最早 Binlog 位点开始消费。Binlog 格式要求:
ROW 格式。如果当前格式为 STATEMENT 或 MIXED,会导致作业无法正确解析 Binlog 数据,可能会报错或无法同步数据。SHOW VARIABLES LIKE 'binlog_format';
如果不是 ROW 格式,可以通过以下命令修改:
SET GLOBAL binlog_format = 'ROW';
Binlog 保留时间:
expire_logs_days 设置过短),Flink 作业将无法继续消费数据。SET GLOBAL expire_logs_days = 7;
根据问题描述,Flink 作业没有报错但数据停留在两天前,可能的原因包括以下几种:
SHOW VARIABLES LIKE 'expire_logs_days';
SET GLOBAL expire_logs_days = 7;
SHOW FULL BINARY LOGS;
earliest-offset 模式下,如果表结构在作业启动后发生了变更,可能导致作业无法正确解析 Binlog 数据,进而停止同步。SHOW TABLE OPTIONS;
SET 'execution.checkpointing.interval' = '1min';
Server ID 配置:
CREATE TABLE mysql_source (...) WITH (
'connector' = 'mysql-cdc',
'server-id' = '123456'
);
时区问题:
server-time-zone 与 MySQL 服务器时区一致。例如:'server-time-zone' = 'Asia/Shanghai'
ROW,如果不是,修改为 ROW。通过以上步骤逐一排查,可以定位并解决数据停留在两天前的问题。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。