本文為您介紹一鍵實(shí)時(shí)同步MaxCompute任務(wù)失敗場景及恢復(fù)解決方法。

常見的實(shí)時(shí)任務(wù)寫入失敗場景

場景分類相關(guān)文檔
Binlog無丟失場景及全增量同步任務(wù)Binlog無丟失
Binlog有丟失場景及全增量同步任務(wù)Binlog有丟失
Merge任務(wù)的報(bào)錯(cuò)失敗場景及全增量同步任務(wù)Merge任務(wù)的報(bào)錯(cuò)失敗

Binlog無丟失

  • 出現(xiàn)不支持的DDL導(dǎo)致實(shí)時(shí)任務(wù)失敗

    解決方法:

    • 進(jìn)入數(shù)據(jù)集成 > 同步任務(wù)找到目標(biāo)任務(wù),單擊更多 > 修改配置編輯全增量同步任務(wù),可以通過先減表,提交執(zhí)行流程,再加表,提交執(zhí)行流程,觸發(fā)此表的重新同步,跳過該表不支持的DDL。
    • 實(shí)時(shí)任務(wù)啟動時(shí),修改DDL策略,修改該類型的DDL策略為“忽略”或者“告警”,如下圖所示:
      說明 這里是臨時(shí)對實(shí)時(shí)同步任務(wù)的DDL規(guī)則修改。全增量同步任務(wù)重新執(zhí)行時(shí),實(shí)時(shí)同步任務(wù)的DDL規(guī)則會被覆蓋掉。您也可以直接修改全增量同步任務(wù)的DDL配置規(guī)則。
      策略
  • 出現(xiàn)臟數(shù)據(jù)導(dǎo)致的實(shí)時(shí)任務(wù)報(bào)錯(cuò)
    • 常見的場景有目標(biāo)列類型和源端數(shù)據(jù)不兼容,查看實(shí)時(shí)任務(wù)運(yùn)行日志、查看臟數(shù)據(jù)的輸出內(nèi)容,請確認(rèn)是源端數(shù)據(jù)問題還是目標(biāo)端問題,如果是目標(biāo)表結(jié)構(gòu)問題,可能需要重建目標(biāo)表以恢復(fù)實(shí)時(shí)任務(wù)。
    • 重新加載表:需要備份原來的表,然后通過編輯全增量同步任務(wù),先減表再加表(使用已有表)的方式重新加載表,確保字段和源端數(shù)據(jù)兼容,執(zhí)行加載表前用已有目標(biāo)表的方式將任務(wù)恢復(fù)。
  • Tunnel端問題導(dǎo)致寫入MaxCompute報(bào)錯(cuò)
    查看實(shí)時(shí)任務(wù)日志,若報(bào)錯(cuò)信息為InternalServerErrorException when calling callable. Exception Msg: Read timed out錯(cuò)誤提示(例如圖中報(bào)錯(cuò)),表示Tunnel服務(wù)端出現(xiàn)了問題,請聯(lián)系MaxCompute值班同學(xué)排查,問題解決后,重啟實(shí)時(shí)任務(wù)。報(bào)錯(cuò)信息

Binlog有丟失

Binlog丟失會導(dǎo)致增量無法回補(bǔ)完整,此時(shí)需要重新初始化全量數(shù)據(jù),并重啟增量。有如下幾種方式可以恢復(fù)全增量同步任務(wù)運(yùn)行:

通過強(qiáng)制重跑功能恢復(fù)

  • 適用場景
    • 實(shí)時(shí)任務(wù)失敗太久導(dǎo)致Binlog被清理,無法補(bǔ)回增量數(shù)據(jù)。
    • 由于各種原因?qū)е履繕?biāo)表缺失了新增列。
    • 由于各種原因?qū)е履繕?biāo)表數(shù)據(jù)出現(xiàn)了缺失或者正確性問題。
  • 功能入口
    1. 數(shù)據(jù)集成 > 同步任務(wù)頁面找到目標(biāo)任務(wù)。
    2. 單擊操作更多 > 強(qiáng)制重跑強(qiáng)制對源端所有表進(jìn)行全增量初始化操作,將源端數(shù)據(jù)重新遷移到目標(biāo)表中,以快速恢復(fù)數(shù)據(jù)。

      您可以在目標(biāo)同步任務(wù)的操作列單擊執(zhí)行詳情,查看任務(wù)執(zhí)行的詳細(xì)信息。

      重要
      • 對與一鍵實(shí)時(shí)同步至MaxCompute任務(wù),執(zhí)行強(qiáng)制重跑前,需要確認(rèn)是否可能和正在運(yùn)行或者即將運(yùn)行的Merge任務(wù)實(shí)例產(chǎn)生沖突(同時(shí)運(yùn)行時(shí),如果業(yè)務(wù)日期相同,分區(qū)數(shù)據(jù)或者表數(shù)據(jù)可能會相互覆蓋)。
        您可以在DataWorks運(yùn)維中心查看周期實(shí)例頁面查看該全增量同步任務(wù)Merge實(shí)例的執(zhí)行情況,如果Merge任務(wù)和強(qiáng)制重跑操作產(chǎn)生沖突,您可以:
        • 暫停強(qiáng)制重跑操作,等待Merge任務(wù)執(zhí)行完成后,再執(zhí)行強(qiáng)制重跑操作。
        • 凍結(jié)即將運(yùn)行的Merge實(shí)例,等待強(qiáng)制重跑成功后,恢復(fù)Merge實(shí)例。
      • 強(qiáng)制重跑暫不支持分庫分表全增量同步任務(wù)。
      • 執(zhí)行完強(qiáng)制重跑后,不建議再執(zhí)行全增量同步任務(wù)加減表等其他操作。等待此次同步鏈路恢復(fù)正常后在做其他操作。如果執(zhí)行了其他操作,需要重新執(zhí)行強(qiáng)制重跑,否則上一次強(qiáng)制重跑無效。
      • 強(qiáng)制重跑執(zhí)行完成后,如果次日數(shù)據(jù)未產(chǎn)出或者M(jìn)erge任務(wù)沒有恢復(fù)自動運(yùn)行時(shí),您需要手動確認(rèn)并恢復(fù)該Merge實(shí)例的運(yùn)行:

通過全量補(bǔ)數(shù)據(jù)方式恢復(fù)

  1. 恢復(fù)實(shí)時(shí)任務(wù)。
    進(jìn)入運(yùn)維中心 > 實(shí)時(shí)同步任務(wù)頁面,找到目標(biāo)任務(wù),重啟實(shí)時(shí)任務(wù),先恢復(fù)增量數(shù)據(jù)。
  2. 執(zhí)行全量補(bǔ)數(shù)據(jù)。
    1. 數(shù)據(jù)集成 > 同步任務(wù)頁面找到目標(biāo)任務(wù)。
    2. 單擊對應(yīng)同步任務(wù)操作列的全量補(bǔ)數(shù)據(jù),配置全量補(bǔ)數(shù)據(jù)參數(shù)。
      1. 選擇補(bǔ)數(shù)據(jù)的業(yè)務(wù)日期。

        選擇前一天的日期作為補(bǔ)數(shù)據(jù)業(yè)務(wù)日期。

      2. 選擇補(bǔ)數(shù)據(jù)端表。

        在左側(cè)選擇框,選擇要執(zhí)行全量同步的表,如果是恢復(fù)整個(gè)任務(wù),就選擇所有表,單擊圖標(biāo)圖標(biāo),將其添加至右側(cè)。

      3. 單擊確定按鈕,開始全量補(bǔ)數(shù)據(jù)操作。
    3. 查看執(zhí)行詳情。
      您可以在目標(biāo)同步任務(wù)的操作列單擊執(zhí)行詳情,查看任務(wù)執(zhí)行的詳細(xì)信息。
      重要
      • 執(zhí)行全量補(bǔ)數(shù)據(jù)前,需要確認(rèn)補(bǔ)數(shù)據(jù)的業(yè)務(wù)日期,是否可能和正在運(yùn)行或者即將運(yùn)行的Merge任務(wù)實(shí)例產(chǎn)生沖突(同時(shí)運(yùn)行時(shí),如果業(yè)務(wù)日期相同,分區(qū)數(shù)據(jù)或者表數(shù)據(jù)可能會相互覆蓋)。
        您可以在DataWorks運(yùn)維中心查看周期實(shí)例頁面查看該全增量同步任務(wù)Merge實(shí)例的執(zhí)行情況,如果Merge任務(wù)和全量補(bǔ)數(shù)據(jù)操作產(chǎn)生沖突,您可以:
        • 暫停全量補(bǔ)數(shù)據(jù)操作,等待Merge任務(wù)執(zhí)行完成后,再執(zhí)行全量補(bǔ)數(shù)據(jù)操作。
        • 凍結(jié)即將運(yùn)行的Merge實(shí)例,等待全量補(bǔ)數(shù)據(jù)完成后,恢復(fù)Merge實(shí)例。
      • 全量補(bǔ)數(shù)據(jù)暫不支持分庫分表全增量同步任務(wù)。
      • 執(zhí)行此操作前,請確認(rèn)注意事項(xiàng)中的說明,并在第二日及時(shí)檢查執(zhí)行結(jié)果,如果次日數(shù)據(jù)未產(chǎn)出或者M(jìn)erge任務(wù)恢復(fù)自動運(yùn)行,需要手動確認(rèn)并恢復(fù)該Merge實(shí)例的運(yùn)行。

通過重新創(chuàng)建全增量同步任務(wù)恢復(fù)

  1. 進(jìn)入運(yùn)維中心 > 實(shí)時(shí)同步任務(wù)頁面,找到目標(biāo)任務(wù),停止原有全增量同步任務(wù)創(chuàng)建的實(shí)時(shí)任務(wù)的運(yùn)行。
  2. 在Datastudio中刪除該全增量同步任務(wù)創(chuàng)建的離線任務(wù)節(jié)點(diǎn),包括checkDone節(jié)點(diǎn)和Merge節(jié)點(diǎn)等,并提交發(fā)布。
    離線節(jié)點(diǎn)在全增量同步任務(wù)創(chuàng)建的工作流中可以找到。離線節(jié)點(diǎn)
  3. 使用已有表的方式,重新創(chuàng)建全增量同步任務(wù),并執(zhí)行改該任務(wù)。

恢復(fù)部分表的數(shù)據(jù)

  1. 進(jìn)入數(shù)據(jù)集成 > 同步任務(wù)找到目標(biāo)任務(wù),單擊更多 > 修改配置編輯全增量同步任務(wù),通過加表的方式恢復(fù)相關(guān)表的數(shù)據(jù)同步。
  2. 恢復(fù)歷史數(shù)據(jù)。
    • 對于一鍵整庫實(shí)時(shí)同步至MaxCompute任務(wù),可以參看上文,執(zhí)行全量補(bǔ)數(shù)據(jù)將當(dāng)前全量數(shù)據(jù)同步至歷史分區(qū)。不支持按時(shí)間范圍補(bǔ)歷史數(shù)據(jù)。
    • 對于其他全增量同步任務(wù),您需要手動創(chuàng)建離線同步任務(wù),補(bǔ)回歷史數(shù)據(jù)。

Merge任務(wù)的報(bào)錯(cuò)失敗

失敗后的排查與恢復(fù)方案,詳情請參考:一鍵MaxCompute Merge任務(wù)節(jié)點(diǎn)問題排查方案