本文为您介绍整库全增量任务失败场景及恢复解决方法。
常见的实时任务写入失败场景
场景分类 | 相关文档 |
Binlog无丢失场景及全增量同步任务 | |
Binlog有丢失场景及全增量同步任务 | |
Merge任务的报错失败场景及全增量同步任务 |
Binlog无丢失
出现不支持的DDL导致实时任务失败
解决方法:
进入找到目标任务,单击,修改任务,可以通过先减表,提交执行流程,再加表,提交执行流程,触发此表的重新同步,跳过该表不支持的DDL。
编辑任务,修改DDL策略,将该类型的DDL策略修改为“忽略”或者在告警配置中设置DDL通知告警。
出现脏数据导致的实时任务报错
常见的场景有目标列类型和源端数据不兼容,查看实时任务运行日志、查看脏数据的输出内容,请确认是源端数据问题还是目标端问题,如果是目标表结构问题,可能需要重建目标表以恢复实时任务。
重新加载表:需要备份原来的表,然后通过编辑全增量同步任务,先减表再加表(使用已有表)的方式重新加载表,确保字段和源端数据兼容,执行加载表前用已有目标表的方式将任务恢复。
Tunnel端问题导致写入MaxCompute报错
查看实时任务日志,若报错信息为
InternalServerError、Exception when calling callable. Exception Msg: Read timed out错误提示(例如图中报错),表示Tunnel服务端出现了问题,请联系MaxCompute值班同学排查,问题解决后,重启实时任务。
Binlog有丢失
Binlog丢失会导致增量无法回补完整,此时需要重新初始化全量数据,并重启增量。有如下几种方式可以恢复全增量同步任务运行:
通过强制重跑功能恢复
适用场景
实时任务失败时间过长导致Binlog被清理,无法补回增量数据。
由于各种原因导致目标表缺失了新增列。
由于各种原因导致目标表数据出现了缺失或者正确性问题。
功能入口
在页面找到目标任务。
单击操作列强制对源端所有表进行全量和增量初始化操作,将源端数据重新迁移到目标表中,以快速恢复数据。
您可以在目标同步任务的操作列单击执行详情,查看任务执行的详细信息。
重要对整库全增量任务,执行重跑前,需要确认是否可能和正在运行或者即将运行的Merge任务实例产生冲突(同时运行时,如果业务日期相同,分区数据或者表数据可能会相互覆盖)。
您可以在DataWorks运维中心的查看周期实例页面查看该全增量同步任务Merge实例的执行情况,如果Merge任务和强制重跑操作产生冲突,您可以:
暂停强制重跑操作,等待Merge任务执行完成后,再执行强制重跑操作。
冻结即将运行的Merge实例,等待强制重跑成功后,恢复Merge实例。
执行完重跑后,不建议再执行全增量同步、加减表等其他操作。等待此次同步链路恢复正常后再做其他操作。如果执行了其他操作,需要重新执行重跑,否则上一次重跑无效。
重跑执行完成后,如果次日数据未产出或者Merge任务没有恢复自动运行时,您需要手动确认并恢复该Merge实例的运行:
实时任务如果有延迟,解决延迟问题。详情请参见实时同步任务延迟解决方案。
如果上一周期的实例未运行或者运行失败,您可以解除对上一周期的依赖。详情请参见查看周期实例。
通过全量补数据方式恢复
恢复任务。
进入页面,重启目标任务,先恢复增量数据采集。
执行全量补数据。
在页面找到目标任务。
单击对应同步任务操作列的全量补数据,配置全量补数据参数。
选择补数据的业务日期。
选择前一天的日期作为补数据业务日期。
选择补数据端表。
在左侧选择框,选择要执行全量同步的表,如果是恢复整个任务,就选择所有表,单击
图标,将其添加至右侧。单击确定按钮,开始全量补数据操作。
查看执行详情。
您可以在目标同步任务的操作列单击执行详情,查看任务执行的详细信息。
重要执行全量补数据前,需要确认补数据的业务日期,是否可能和正在运行或者即将运行的Merge任务实例产生冲突(同时运行时,如果业务日期相同,分区数据或者表数据可能会相互覆盖)。
您可以在DataWorks运维中心的查看周期实例页面查看该全增量同步任务Merge实例的执行情况,如果Merge任务和全量补数据操作产生冲突,您可以:
暂停全量补数据操作,等待Merge任务执行完成后,再执行全量补数据操作。
冻结即将运行的Merge实例,等待全量补数据完成后,恢复Merge实例。
全量补数据暂不支持分库分表全增量同步任务。
执行此操作前,请确认注意事项中的说明,并在第二日及时检查执行结果,如果次日数据未产出或者Merge任务未恢复自动运行,需要手动确认并恢复该Merge实例的运行。
通过重新创建全增量同步任务恢复
进入页面,停止并删除原有的整库全增量同步任务。
使用已有表的方式,重新配置整库全增量任务,并执行该任务。
恢复部分表的数据
进入找到目标任务,单击编辑全增量同步任务,通过加表的方式恢复相关表的数据同步。
恢复历史数据。
对于整库全增量任务,可以采用通过全量补数据方式恢复方式,将当前全量数据同步至历史分区。不支持按时间范围补历史数据。
对于整库实时同步任务,您需要手动创建离线同步任务,补回历史数据。
Merge任务的报错失败
失败后的排查与恢复方案,详情请参考:整库全增量任务问题排查方案。