Flink同步mysql到iceberg

一、如何做一致性保障

1、全量数据分片读取,增量数据单并发读取,保证增量阶段不会乱序
2、全量阶段写入失败会清空表后重新写入,避免重复数据。
3、全量阶段多task并行读取,把每个task开始结束时间提交给Flink Coordinator,由Coordinator做时间合并后,仅读取一次全量同步区间内变化的binlog数据,然后更新目标表。最后一个窗口较大时,可以将数据写入state,保证内存占用不会过大。
4、依托Flink 一致性快照算法。  mysql->iceberg在flink分多阶段处理,mysql -> flink source -> flink writer -> flink committer,iceberg只有在committer后才可读,flink快照会保留各个阶段状态和数据,如处理数据过程中出现异常后可从最近快照恢复继续同步。
5、依托flink两阶段提交。 在同步阶段写数据文件时,写入文件对外不可读,只有committer后才对外可读。 flink把读写文件和committer分开成两个请求,保证脏数据不对外服务。

 

posted @ 2024-05-14 10:41  黑水滴  阅读(6)  评论(0编辑  收藏  举报