Data Integration的離線同步功能為您提供資料讀取(Reader)和寫入外掛程式(Writer),方便您通過定義來源與去向資料來源,並結合DataWorks調度參數使用,將源端資料庫中全量或增量資料的同步至目標資料庫中。本文為您介紹離線同步的相關能力。
使用限制
DataWorks的離線同步暫不支援跨時區同步資料。如果資料同步任務中的資料來源與使用的DataWorks資源群組不在同一個時區,則會導致同步的資料有誤。
費用說明
Data Integration同步任務運行會佔用Data Integration任務執行資源,DataWorks會根據您使用的資源進行收費,此外,離線同步任務通過調度系統下發至對應資源群組運行時,還會產生調度相關費用。詳情請參見計費簡介。
說明調度費用詳情請參見計費簡介。
關於任務下發機制,詳情請參見DataWorks資源群組概述。
如果Data Integration同步任務使用的資料來源配置了公網地址,則執行同步任務時將產生公網流量費用。費用說明請參見公網流量計費說明。
功能概述
離線同步支援的能力如下圖所示:
功能 | 描述 |
異構資料來源間的資料同步 | Data Integration目前支援40+資料來源類型,包括關係型資料庫、非結構化儲存、巨量資料儲存、訊息佇列間的資料同步。您可以通過定義來源與去向資料來源,並通過Data Integration提供的資料幫浦外掛程式(Reader)、資料寫入外掛程式(Writer),實現任意結構化、半結構化資料來源之間資料轉送。詳情請參見:支援的資料來源及同步方案。 |
複雜網路環境下的資料同步 | 離線同步支援雲資料庫,本地IDC、ECS自建資料庫或非阿里雲資料庫等環境下的資料同步。您可以根據資料庫所在網路環境,選擇合適的網路解決方案來實現資料來源與資源群組的網路連通。在配置同步任務前,您需要確保Data Integration資源群組與您將同步的資料來源端與目標端網路環境已經連通,對應資料庫環境與網路連通配置詳情請參見:網路連通方案。 |
資料同步情境 | 離線同步支援單表同步至目標端單表、分庫分表同步至目標端單表兩類同步情境。同時,結合DataWorks調度參數,實現增量資料和全量資料周期性寫入到目標表對應資料分割函數。離線同步任務使用調度參數,再結合營運中心補資料功能,可實現基於一套任務配置,批量將歷史資料同步至目標資料庫或資料倉儲指定表或表指定分區。調度參數說明請參見:調度參數支援的格式。 說明
|
離線同步任務配置 | 您可以通過以下方式配置Data Integration離線同步任務。
說明 任務配置相關能力說明請參見:離線同步任務配置相關能力。 |
離線同步任務營運 |
離線同步任務配置相關能力
支援的能力 | 說明 |
全量或增量資料同步 | 離線同步任務可以通過配置資料過濾並結合調度參數使用,來決定同步全量資料還是增量資料。不同外掛程式增量同步處理配置方式不同,關於增量資料同步配置詳情請參見:情境:配置增量資料離線同步任務。 |
定義欄位對應關係並為目標表欄位賦值 | 在同步任務配置過程中,您可通過欄位對應,來定義源端欄位與目標端欄位的讀取和寫入關係,源端欄位將會根據欄位對應關係寫入目標端對應類型的欄位中。
|
作業速率上限控制 |
|
分布式執行任務 | 部分資料來源支援分布式執行任務,分布式執行模式可以將您的任務切片分散到多台執行節點上並發執行,進而做到同步速度隨執行叢集規模做水平擴充,突破單機執行瓶頸。如果您對於同步效能有比較高的訴求可以使用分布式模式。 另外分布式模式也可以使用機器的片段資源,對資源使用率友好。 說明 具體資料來源是否支援分布式執行,詳情請參見各外掛程式文檔及實際產品介面。 |
髒資料個數控制 | Data Integration預設允許髒資料產生,支援您對同步過程中產生的髒資料個數設定閾值,並定義其影響:
說明 髒資料是對於業務沒有意義,格式非法或者同步過程中出現問題的資料。單條資料寫入目標資料來源過程中發生了異常,則此條資料為髒資料。 因此只要是寫入失敗的資料均被歸類於髒資料。例如,源端是VARCHAR類型的資料寫到INT類型的目標列中,導致因為轉換不合理而無法寫入的資料。您可以在同步任務配置時,控制同步過程中是否允許髒資料產生,並且支援控制髒資料條數,即當髒資料超過指定條數時,任務失敗退出。 |
Data Integration使用調度參數的相關說明
離線同步
Data Integration離線同步任務中,可以使用調度參數來指定同步源表及目標表的資料路徑以及資料範圍,調度參數的配置方式與其他類型任務一致,沒有特殊限制。
在同步任務運行時,任務中配置的預留位置參數都會被替換為調度參數運算式所表達的實際值,然後再執行資料同步。
樣本:建立一個離線同步任務,每天從源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)
如下圖所示: