flink 使用 flink-doris-connector-1.20.24.0.0 2pc写入doris,期间BE节点挂了后自动恢复,后续的checkpoint都没法正常保存。后续人工手动从最新的成功的checkpoint处恢复,发现数据重复。
flink 使用 flink-doris-connector-1.20.24.0.0 2pc写入doris,期间BE节点挂了后自动恢复,后续的checkpoint都没法正常保存。后续人工手动从最新的成功的checkpoint处恢复,发现数据重复。
延长事务过期时间:在 fe.conf 中增大 streaming_label_keep_max_second(默认 12 小时),并将 label_num_threshold 调大或设为 -1,避免事务 ID 在 checkpoint 恢复前过期。https://doris.apache.org/docs/4.x/ecosystem/flink-doris-connector/#flink-cdc-synchronize-ddl-statements
严格从最新成功 checkpoint 恢复:2PC 场景下必须从最新 checkpoint 恢复,不能跳过或使用旧 checkpoint,否则 Exactly-Once 语义无法保证。
若目标表为 Unique 模型,可考虑禁用 2PC:改用 sink.enable-2pc=false + Unique 主键去重,实现幂等写入,避免 2PC 状态管理复杂性:
"在 Unique 模型中,2pc 也可以禁用以实现幂等写入。" https://doris.apache.org/docs/4.x/ecosystem/flink-doris-connector/#flink-cdc-synchronize-ddl-statements