1. 概述
注:本文适用于 4.1.2 及之后版本。
1.1 应用场景
用户设计的定时任务取数逻辑为:每天抽取当天调度时间往前推 24h 内的数据,汇集到目标数据库。
节假日期间 3 天,系统宕机,定时任务没有运行,导致目标数据库缺少 3 天的数据。
1.2 实现方案
使用 重试任务 功能,补齐缺失数据。
本文方案适用于「增量同步-使用时间戳」场景,即需要满足下面两个条件:
数据只存在新增,且每次抽取的数据不重叠,比如取出当天、当月、前一天、上月数据等。
定时任务取数时用到 ${cyctime},或基于 ${cyctime} 延伸出来的 自定义时间变量(任务参数、全局参数里定义的时间类型参数)。
2. 操作步骤
2.1 场景模拟
2.2.1 任务设置说明
定时任务每天晚上执行,将「到货日期」为当天的数据写入到目标表中。如下图所示:
2.2.2 场景说明
2024-07-23 日发现,因业务库异常,导致目标表中缺少 2024-07-21、2024-07-22 两天的数据。如下图所示:
2.2 执行补数据操作
业务库修复完成后,可使用「重试任务」功能将 2024-07-21、2024-07-22 两天的数据抽取到目标数据库。
1)在「任务运维>运行记录」中,找到该任务的历史运行记录。点击「重试」按钮,如下图所示:
2)本文示例中,定时任务只包含「数据同步」这一个节点,选择「指定范围重试>重试节点」,如下图所示:
注:用户根据实际情况选择重试范围。
3)「指定业务日期」中选择 2024-07-22 的日期(由于参数的格式为 yyyy-mm-dd,所以无需考虑时分秒,时分秒任意设置即可),先补齐 2024-07-22 的数据。如下图所示:
注1:进行重试时,用户可以对本次重试时的参数进行临时配置,配置结果只影响本次重试运行、不修改实际任务配置。
注2:A 任务依赖 B 任务,对当前 B 任务设置了「指定业务日期」,会触发 A 任务,A 任务会被触发但是执行的时间是当前时间非「指定业务日期」。
4)运行成功后,可看到 2024-07-22 的数据已抽取到目标表中。如下图所示:
可在「任务运维>运行记录」中,看到重试的运行记录。如下图所示:
5)重复上述步骤,将「指定业务日期」设置为 2024-07-21 ,补齐 2024-07-21 的数据。最终效果如下图所示: