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