Flink CDC中我的日志一直打印这个正常不?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Flink CDC中,日志的打印内容是否正常需要结合具体的日志信息和场景来判断。以下是一些常见的情况和排查方法,帮助您确认日志是否正常以及如何处理:
Flink CDC的日志级别通常包括INFO
、DEBUG
、WARN
和ERROR
等。如果日志频繁打印某些信息,可能是因为: - 日志级别设置较低:例如,日志级别为DEBUG
时会打印大量详细信息,这可能会干扰问题定位。 - 特定事件触发了日志记录:例如,CDC源表在Checkpoint时会以INFO
级别打印当前Binlog位点信息,格式为Binlog offset on checkpoint {checkpoint-id}
。
建议操作: - 检查日志级别是否符合需求。如果仅需查看关键信息,建议将日志级别调整为INFO
。 - 如果日志内容是预期的行为(如Checkpoint相关日志),则无需担心。
如果日志中包含WARN
或ERROR
级别的信息,可能是由于以下原因: - 脏数据:例如,Postgres CDC中可能存在非法日期数据,导致日志中打印警告信息。 - TOAST数据未传输:Postgres CDC中,如果TOAST数据未发生变化且配置了'debezium.schema.refresh.mode'='columns_diff_exclude_unchanged_toast'
,日志中可能会提示未传输TOAST数据。
建议操作: - 针对脏数据,可以通过配置'debezium.event.deserialization.failure.handling.mode'='warn'
或'ignore'
参数跳过脏数据。 - 确保副本身份完整,并检查TOAST数据相关的配置是否正确。
如果日志中出现以下错误信息,可能是由于Binlog格式或数据库权限问题: - Binlog格式不支持:例如,binlog probably contains events generated with statement or mixed based replication format
错误表明Binlog格式为Mixed
,需要将其设置为ROW
格式。 - 权限不足:例如,Encountered change event for table xxx.xxx whose schema isn't known to this connector
错误表明数据库用户缺少对应表的权限。
建议操作: - 检查并修改Binlog格式为ROW
:
show variables like "binlog_format";
set global binlog_format=ROW;
'debezium.snapshot.mode'='never'
配置。在Flink CDC中,全量阶段和增量阶段的日志行为可能不同: - 全量阶段:日志中可能会打印全量数据读取进度,例如低水位线和高水位线之间的日志读取情况。 - 增量阶段:日志中可能会打印Binlog读取的相关信息,例如BinlogSplitReader is created
。
建议操作: - 如果日志中频繁打印全量阶段的信息,可以考虑跳过全量阶段日志读取(通过scan.incremental.snapshot.backfill.skip=true
参数)。 - 确认作业是否已完成全量数据同步,可以通过监控currentEmitEventTimeLag
指标或日志中的BinlogSplitReader is created
信息判断。
如果日志中提示重复事件或乱序数据,可能是由于以下原因: - 重复事件:Maxwell在非正常情况下可能会投递重复的变更事件,导致Flink消费时出现重复数据。 - 乱序数据:如果数据乱序,可能导致Watermark计算错误,进而丢弃迟到数据。
建议操作: - 针对重复事件,可以在源表上定义主键,并设置table.exec.source.cdc-events-duplicate=true
参数进行去重。 - 针对乱序数据,合理设置Watermark生成策略,例如Watermark = Event time - 5s
,以延迟触发窗口计算。
建议操作: - 检查日志配置,默认保留2个文件,每个文件大小为5 MB。如果需要更长的日志保存时间,可以将日志输出至OSS。 - 如果日志未正常输出,请联系技术支持。
根据上述分析,您可以结合具体日志内容判断其是否正常。如果日志内容属于预期行为(如Checkpoint信息或全量阶段日志),则无需担心;如果是异常信息(如脏数据、权限问题或重复事件),请参考对应的解决方案进行处理。
如果您能提供具体的日志内容,我可以进一步为您分析和解答!
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。