數據集成的離線同步功能為您提供數據讀?。≧eader)和寫入插件(Writer),方便您通過定義來源與去向數據源,并結合DataWorks調度參數使用,將源端數據庫中全量或增量數據的同步至目標數據庫中。本文為您介紹離線同步的相關能力。
使用限制
DataWorks的離線同步暫不支持跨時區同步數據。如果數據同步任務中的數據源與使用的DataWorks資源組不在同一個時區,則會導致同步的數據有誤。
費用說明
數據集成同步任務運行會占用數據集成任務執行資源,DataWorks會根據您使用的資源進行收費,此外,離線同步任務通過調度系統下發至對應資源組運行時,還會產生調度相關費用。詳情請參見計費簡介。
說明調度費用詳情請參見計費簡介。
關于任務下發機制,詳情請參見DataWorks資源組概述。
如果數據集成同步任務使用的數據源配置了公網地址,則執行同步任務時將產生公網流量費用。費用說明請參見公網流量計費說明。
功能概述
離線同步支持的能力如下圖所示:
功能 | 描述 |
異構數據源間的數據同步 | 數據集成目前支持40+數據源類型,包括關系型數據庫、非結構化存儲、大數據存儲、消息隊列間的數據同步。您可以通過定義來源與去向數據源,并通過數據集成提供的數據抽取插件(Reader)、數據寫入插件(Writer),實現任意結構化、半結構化數據源之間數據傳輸。詳情請參見:支持的數據源及同步方案。 |
復雜網絡環境下的數據同步 | 離線同步支持云數據庫,本地IDC、ECS自建數據庫或非阿里云數據庫等環境下的數據同步。您可以根據數據庫所在網絡環境,選擇合適的網絡解決方案來實現數據源與資源組的網絡連通。在配置同步任務前,您需要確保數據集成資源組與您將同步的數據來源端與目標端網絡環境已經連通,對應數據庫環境與網絡連通配置詳情請參見:網絡連通方案。 |
數據同步場景 | 離線同步支持單表同步至目標端單表、分庫分表同步至目標端單表兩類同步場景。同時,結合DataWorks調度參數,實現增量數據和全量數據周期性寫入到目標表對應分區功能。離線同步任務使用調度參數,再結合運維中心補數據功能,可實現基于一套任務配置,批量將歷史數據同步至目標數據庫或數據倉庫指定表或表指定分區。調度參數說明請參見:調度參數支持的格式。 說明
|
離線同步任務配置 | 您可以通過以下方式配置數據集成離線同步任務。
說明 任務配置相關能力說明請參見:離線同步任務配置相關能力。 |
離線同步任務運維 |
離線同步任務配置相關能力
支持的能力 | 說明 |
全量或增量數據同步 | 離線同步任務可以通過配置數據過濾并結合調度參數使用,來決定同步全量數據還是增量數據。不同插件增量同步配置方式不同,關于增量數據同步配置詳情請參見:場景:配置增量數據離線同步任務。 |
定義字段映射關系并為目標表字段賦值 | 在同步任務配置過程中,您可通過字段映射,來定義源端字段與目標端字段的讀取和寫入關系,源端字段將會根據字段映射關系寫入目標端對應類型的字段中。
|
作業速率上限控制 |
|
分布式執行任務 | 部分數據源支持分布式執行任務,分布式執行模式可以將您的任務切片分散到多臺執行節點上并發執行,進而做到同步速度隨執行集群規模做水平擴展,突破單機執行瓶頸。如果您對于同步性能有比較高的訴求可以使用分布式模式。 另外分布式模式也可以使用機器的碎片資源,對資源利用率友好。 說明 具體數據源是否支持分布式執行,詳情請參見各插件文檔及實際產品界面。 |
臟數據個數控制 | 數據集成默認允許臟數據產生,支持您對同步過程中產生的臟數據個數設置閾值,并定義其影響:
說明 臟數據是對于業務沒有意義,格式非法或者同步過程中出現問題的數據。單條數據寫入目標數據源過程中發生了異常,則此條數據為臟數據。 因此只要是寫入失敗的數據均被歸類于臟數據。例如,源端是VARCHAR類型的數據寫到INT類型的目標列中,導致因為轉換不合理而無法寫入的數據。您可以在同步任務配置時,控制同步過程中是否允許臟數據產生,并且支持控制臟數據條數,即當臟數據超過指定條數時,任務失敗退出。 |
數據集成使用調度參數的相關說明
離線同步
數據集成離線同步任務中,可以使用調度參數來指定同步源表及目標表的數據路徑以及數據范圍,調度參數的配置方式與其他類型任務一致,沒有特殊限制。
在同步任務運行時,任務中配置的占位符參數都會被替換為調度參數表達式所表達的實際值,然后再執行數據同步。
示例:創建一個離線同步任務,每天從源MySQL訂單表中同步前一天新產生的訂單數據到MaxCompute目標表的當天分區,原表訂單的創建時間字段為gmt_created,目標odps表的分區字段為ds,可以將任務配置如下:
同步任務配置:
調度參數配置:
訂單表每天的增量數據,通過配置where過濾條件的方式進行篩選:
bizdate_yesterday為表示增量訂單的歸屬日期(定時任務的前一日日期),調度參數表達式為${yyyy-mm-dd}。
bizdate_today表示增量訂單的截止日期(定時任務的當日日期),調度參數表達式為$[yyyy-mm-dd]。
bizdate_today和bizdate_yesterday為調度參數名字,可以自行指定,在實際執行時 bizdate_today和bizdate_yesterday都會被替換為調度參數所表達的時間。
目標MaxCompute表分區名稱也以調度參數的方式指定,$bizdate表示業務日期,定時任務執行時,任務配置的分區表達式會替換為調度參數所表達的業務日期。調度參數表達式的詳細配置說明請參考文檔:配置并使用調度參數。
以上的例子在運行時任務代碼配置的占位符參數被替換如下(圖示業務日期選擇為20221116):
任務配置中如果配置了占位符,一定要設置其對應的調度參數。
整庫離線同步
對于整庫離線同步,僅支持使用如下調度參數:
bizdate=${yyyymmdd} year=$[yyyy] month=$[mm] day=$[dd] hour=$[hh24]
任務配置時,變量需定義為${bizdate}, ${year},${month}, ${day}, ${hour}
示例:整庫離線同步至MaxCompute(一次性全量周期性增量)天增量篩選的where條件可以配置成:STR_TO_DATE('${bizdate}', '%Y%m%d') <= columnName AND columnName < DATE_ADD(STR_TO_DATE('${bizdate}', '%Y%m%d'), interval 1 day)
如下圖所示: