全部產品
Search
文件中心

DataWorks:離線同步能力說明

更新時間:Jun 19, 2024

Data Integration的離線同步功能為您提供資料讀取(Reader)和寫入外掛程式(Writer),方便您通過定義來源與去向資料來源,並結合DataWorks調度參數使用,將源端資料庫中全量或增量資料的同步至目標資料庫中。本文為您介紹離線同步的相關能力。

使用限制

DataWorks的離線同步暫不支援跨時區同步資料。如果資料同步任務中的資料來源與使用的DataWorks資源群組不在同一個時區,則會導致同步的資料有誤。

費用說明

  • Data Integration同步任務運行會佔用Data Integration任務執行資源,DataWorks會根據您使用的資源進行收費,此外,離線同步任務通過調度系統下發至對應資源群組運行時,還會產生調度相關費用。詳情請參見計費簡介

    說明
  • 如果Data Integration同步任務使用的資料來源配置了公網地址,則執行同步任務時將產生公網流量費用。費用說明請參見公網流量計費說明

功能概述

離線同步支援的能力如下圖所示:離線同步能力

功能

描述

異構資料來源間的資料同步

Data Integration目前支援40+資料來源類型,包括關係型資料庫、非結構化儲存、巨量資料儲存、訊息佇列間的資料同步。您可以通過定義來源與去向資料來源,並通過Data Integration提供的資料幫浦外掛程式(Reader)、資料寫入外掛程式(Writer),實現任意結構化、半結構化資料來源之間資料轉送。詳情請參見:支援的資料來源及同步方案

複雜網路環境下的資料同步

離線同步支援雲資料庫,本地IDC、ECS自建資料庫或非阿里雲資料庫等環境下的資料同步。您可以根據資料庫所在網路環境,選擇合適的網路解決方案來實現資料來源與資源群組的網路連通。在配置同步任務前,您需要確保Data Integration資源群組與您將同步的資料來源端與目標端網路環境已經連通,對應資料庫環境與網路連通配置詳情請參見:網路連通方案

資料同步情境

離線同步支援單表同步至目標端單表、分庫分表同步至目標端單表兩類同步情境。同時,結合DataWorks調度參數,實現增量資料和全量資料周期性寫入到目標表對應資料分割函數。離線同步任務使用調度參數,再結合營運中心補資料功能,可實現基於一套任務配置,批量將歷史資料同步至目標資料庫或資料倉儲指定表或表指定分區。調度參數說明請參見:調度參數支援的格式

說明
  • 分庫分表支援MySQL、SQL Server、Oracle、PostgreSQL、PolarDB和AnalyticDB等類型的資料來源。詳情請參見:情境:配置分庫分表離線同步任務

  • 離線同步模組僅支援單表或分庫分表資料離線同步至目標端單表,若您需要將多庫多表資料同步至目標端多表,您可使用同步解決方案中的整庫離線同步。更多關於同步方案選擇,請參見:選擇同步方案概述

離線同步任務配置

您可以通過以下方式配置Data Integration離線同步任務。

  • 嚮導模式:提供嚮導式的開發引導,通過可視化的填寫和下一步的引導,助您快速完成資料同步任務的配置工作。嚮導模式的學習成本低,但無法支援部分進階功能。詳情請參見:通過嚮導模式配置離線同步任務

  • 指令碼模式:提供指令碼式的開發引導,通過直接編寫資料同步的JSON指令碼來完成資料同步開發,適合進階使用者,學習成本較高。指令碼模式可以提供更豐富靈活的能力,實現精細化的組態管理。詳情請參見:通過指令碼模式配置離線同步任務

  • API建立:您還可以通過OpenAPI調用相關介面,建立資料同步任務,同步來源端資料至目標端。詳情請參見:通過OpenAPI建立、修改、刪除離線同步任務

說明

任務配置相關能力說明請參見:離線同步任務配置相關能力

離線同步任務營運

  • 任務運行狀態監控:支援對離線同步任務的運行狀態進行監控,包括任務未完成、出錯、完成等情境的監控警示,並且支援通過郵件、簡訊、電話、DingTalk群機器人和WebHook等多種警示方式將警示資訊發送給警示接收人。詳情請參見:規則管理

  • 表資料品質監控:支援對同步後的資料進行資料品質監控,目前僅部分資料庫類型支援配置資料品質監控規則。詳情請參見:資料品質概述

  • 開發和生產隔離:同一個名稱的資料來源存在開發環境和生產環境兩套配置,配置資料同步任務時會使用開發環境的資料來源,提交生產運行時會使用生產環境的資料來源。您可以通過資料來源隔離使其在不同環境隔離使用。

離線同步任務配置相關能力

任務配置

支援的能力

說明

全量或增量資料同步

離線同步任務可以通過配置資料過濾並結合調度參數使用,來決定同步全量資料還是增量資料。不同外掛程式增量同步處理配置方式不同,關於增量資料同步配置詳情請參見:情境:配置增量資料離線同步任務

定義欄位對應關係並為目標表欄位賦值

在同步任務配置過程中,您可通過欄位對應,來定義源端欄位與目標端欄位的讀取和寫入關係,源端欄位將會根據欄位對應關係寫入目標端對應類型的欄位中。

  • 提供多種欄位對應方式:

    • 嚮導模式支援同名映射、同行映射,並支援自訂所有欄位或部分欄位間的欄位關係。未映射欄位資料不會同步,請確保目標端未映射欄位有預設值或可為空白,否則資料會寫入失敗。

    • 指令碼模式按照column配置中欄位順序來映射,讀端與寫端的欄位個數需要一致,否則任務將執行失敗。

  • 提供目標表欄位賦值能力:支援為目標表添加常量,變數。

作業速率上限控制

  • 提供任務並發數控制功能來限制Data Integration讀取和寫入資料庫的最大並發數。

  • 提供限流功能控制同步流量,避免同步速度過快對資料來源端或者資料去向端造成太大的壓力。

    說明

    不限流的情況下則會提供現有硬體環境下最大的傳輸效能。

分布式執行任務

部分資料來源支援分布式執行任務,分布式執行模式可以將您的任務切片分散到多台執行節點上並發執行,進而做到同步速度隨執行叢集規模做水平擴充,突破單機執行瓶頸。如果您對於同步效能有比較高的訴求可以使用分布式模式。 另外分布式模式也可以使用機器的片段資源,對資源使用率友好。

說明

具體資料來源是否支援分布式執行,詳情請參見各外掛程式文檔及實際產品介面。

髒資料個數控制

Data Integration預設允許髒資料產生,支援您對同步過程中產生的髒資料個數設定閾值,並定義其影響:

  • 當不允許髒資料產生時,則同步任務執行過程中如果產生髒資料,任務將失敗退出。

  • 當允許髒資料並設定其閾值時:

    • 若產生的髒資料在閾值範圍內,同步任務將忽略髒資料(即不會寫入目標端),並正常執行。

    • 若產生的髒資料超出閾值範圍,同步任務將失敗退出。

說明

髒資料是對於業務沒有意義,格式非法或者同步過程中出現問題的資料。單條資料寫入目標資料來源過程中發生了異常,則此條資料為髒資料。 因此只要是寫入失敗的資料均被歸類於髒資料。例如,源端是VARCHAR類型的資料寫到INT類型的目標列中,導致因為轉換不合理而無法寫入的資料。您可以在同步任務配置時,控制同步過程中是否允許髒資料產生,並且支援控制髒資料條數,即當髒資料超過指定條數時,任務失敗退出。

Data Integration使用調度參數的相關說明

離線同步

Data Integration離線同步任務中,可以使用調度參數來指定同步源表及目標表的資料路徑以及資料範圍,調度參數的配置方式與其他類型任務一致,沒有特殊限制。

在同步任務運行時,任務中配置的預留位置參數都會被替換為調度參數運算式所表達的實際值,然後再執行資料同步。

樣本:建立一個離線同步任務,每天從源MySQL訂單表中同步前一天新產生的訂單資料到MaxCompute目標表的當天分區,原表訂單的建立時間欄位為gmd_created, 目標odps表的分區欄位為ds,可以將任務配置如下:

同步任務配置:eg

調度參數配置:diaodu

訂單表每天的增量資料,通過配置where過濾條件的方式進行篩選:

  • bizdate_yesterday為表示增量訂單的歸屬日期(定時任務的前一日日期),調度參數運算式為${yyyy-mm-dd}

  • bizdate_today表示增量訂單的到期日(定時任務的當日日期),調度參數運算式為$[yyyy-mm-dd]

  • bizdate_todaybizdate_yesterday為調度參數名字,可以自行指定,在實際執行時 bizdate_todaybizdate_yesterday都會被替換為調度參數所表達的時間。

目標MaxCompute表分區名稱也以調度參數的方式指定,$bizdate表示業務日期,定時任務執行時,任務配置的分區運算式會替換為調度參數所表達的業務日期。調度參數運算式的詳細配置說明請參考文檔:配置並使用調度參數

以上的例子在運行時任務代碼配置的預留位置參數被替換如下(圖示業務日期選擇為20221116):eg

說明

任務配置中如果配置了預留位置,一定要設定其對應的調度參數。

整庫離線同步

對於整庫離線同步,僅支援使用如下調度參數:

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)如下圖所示:整庫