本文為您介紹一鍵實(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)入 找到目標(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ò)信息為
InternalServerError
、Exception when calling callable. Exception Msg: Read timed out
錯(cuò)誤提示(例如圖中報(bào)錯(cuò)),表示Tunnel服務(wù)端出現(xiàn)了問題,請聯(lián)系MaxCompute值班同學(xué)排查,問題解決后,重啟實(shí)時(shí)任務(wù)。
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)了缺失或者正確性問題。
- 功能入口
- 在 頁面找到目標(biāo)任務(wù)。
- 單擊操作列 強(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)行:
- 實(shí)時(shí)任務(wù)如果有延遲,解決延遲問題。詳情請參見實(shí)時(shí)同步任務(wù)延遲解決方案。
- 如果上一周期的實(shí)例未運(yùn)行或者運(yùn)行失敗,您可以解除對上一周期的依賴。詳情請參見查看周期實(shí)例。
- 對與一鍵實(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ù)可能會相互覆蓋)。
通過全量補(bǔ)數(shù)據(jù)方式恢復(fù)
- 恢復(fù)實(shí)時(shí)任務(wù)。進(jìn)入頁面,找到目標(biāo)任務(wù),重啟實(shí)時(shí)任務(wù),先恢復(fù)增量數(shù)據(jù)。
- 執(zhí)行全量補(bǔ)數(shù)據(jù)。
通過重新創(chuàng)建全增量同步任務(wù)恢復(fù)
- 進(jìn)入 頁面,找到目標(biāo)任務(wù),停止原有全增量同步任務(wù)創(chuàng)建的實(shí)時(shí)任務(wù)的運(yùn)行。
- 在Datastudio中刪除該全增量同步任務(wù)創(chuàng)建的離線任務(wù)節(jié)點(diǎn),包括checkDone節(jié)點(diǎn)和Merge節(jié)點(diǎn)等,并提交發(fā)布。離線節(jié)點(diǎn)在全增量同步任務(wù)創(chuàng)建的工作流中可以找到。
- 使用已有表的方式,重新創(chuàng)建全增量同步任務(wù),并執(zhí)行改該任務(wù)。
恢復(fù)部分表的數(shù)據(jù)
- 進(jìn)入 找到目標(biāo)任務(wù),單擊 編輯全增量同步任務(wù),通過加表的方式恢復(fù)相關(guān)表的數(shù)據(jù)同步。
- 恢復(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)問題排查方案。