断点续传
info
该功能仅专业版、旗舰版支持
概述
某些表在数据同步时,同步时数据量大,耗时久。如果在同步过程中由于某些原因导致任务失败,从头再来的话成本非常大,因此需要一个断点续传的功能从任务失败的地方继续。
原理
断点续传是利用Flink checkpoint机制保存任务运行时的状态及位置信息,当任务失败重新运行时从最近的一个checkpoint恢复任务运行时的状态及位置,从而达到续传的目的。
当任务失败时,我们可以从Flink界面中拿到checkpoint信息,在下次任务运行时将checkpoint路径传入,Flinkx获取到该路径后会从checkpoint的元数据信息中恢复checkpoint时任务读取的位置以及当时的指标信息,在任务开始运行时同样通过SQL构造出过滤条件,将已经读取到的数据过滤掉,达到续传的目的。
tip
只有关系型数据库类型的插件支持断点续传功能。
数据源(这里特指关系数据库)中必须包含一个升序的字段,比如主键或者日期类型的字段,同步过程中会记录同步的点位,任务在中途发生异常失败,在恢复运行时使用这个字段构造查询条件过滤已经同步过的数据,如果这个字段的值不是升序的,那么任务恢复时过滤的数据就是错误的,最终导致数据的缺失或重复;用户需保证此字段的值是数据升序的;