全部產品
Search
文件中心

DataWorks:MySQL整庫全增量同步處理至MaxCompute

更新時間:Jan 31, 2026

Data Integration目前支援將ApsaraDB for OceanBase、MySQL、Oracle、PolarDB等源端的資料整庫全增量同步處理至MaxCompute。該同步鏈路支援全增量一體化同步,先進行全量資料移轉,然後再將增量資料即時同步在T+1日合并至目標端。本文以MySQL為源端、MaxCompute為目標端情境為例,為您介紹如何建立整庫全增量任務。

工作原理

整庫全增量同步處理任務通過統一的流程,實現全量資料的首次遷移和增量資料的持續同步。任務啟動後,系統會自動建立並協調離線和即時子任務,將資料合併寫入目標表(Base表)。

核心流程包括三個階段:

  1. 全量初始化:任務啟動後,首先執行離線同步任務,將源端資料庫中所有表的表結構和存量資料一次性遷移到 MaxCompute 的目標 Base 表中。全量資料初始化完成後,該離線同步任務將被凍結。

  2. 增量資料同步:全量遷移完成後,系統啟動即時同步任務,持續捕獲源端資料庫(例如通過 MySQL Binlog)的增量變更資料(Insert、Update、Delete),並將其准即時地寫入 MaxCompute 的臨時 Log 表中。

  3. 周期性合并(Merge):系統每日(T+1)自動執行 Merge 任務,將前一天(T日)積累在 Log 表中的增量資料與 Base 表中的全量資料進行合并,最終產生 T 日最新的全量快照資料,並寫入 Base 表的新分區。該合并任務每日執行一次。

以寫入分區表為例,資料流轉過程如下:

image

該同步任務具有以下特性:

  • 多表到多表/單表:支援將源端多表同步到目標端對應的多表,也支援通過映射規則將多張源表的資料合併寫入目標端單表。

  • 工作群組成:一個整庫同步任務由用於全量初始化的離線同步子任務和用於增量同步處理的即時同步子任務構成以及用於合并資料的Merge工作群組成。

  • 目標表支援:支援將資料寫入 MaxCompute 的分區表和非分區表。

適用範圍

  • 資源要求:執行任務需要使用Serverless資源群組。當按執行個體模式同步時,資源規格最低要求為:獨享Data Integration資源群組8C16G,Serverless資源群組2 CU。

  • 網路連通:需確保Data Integration資源群組與源端(如MySQL)、目標端(如MaxCompute)資料來源網路連通。詳情參見網路連通方案概述

  • 地區限制:僅支援同步至與當前 DataWorks 工作空間同地區的自建 MaxCompute 資料來源。使用自建MaxCompute資料來源時,DataWorks工作空間的資料開發中仍需要綁定MaxCompute計算資源,否則將無法建立MaxCompute SQL節點,導致全量同步done節點建立失敗。

  • 調度資源群組限制:使用任務配置的Serverless資源群組作為調度資源群組。

  • 目標表類型限制:不支援將源端資料同步至 MaxCompute 外部表格。

注意事項

  • 主鍵要求:不支援同步無主鍵表。對於無主鍵的表,必須在配置時手動指定一個或多個列作為業務主鍵(自選主鍵)。

  • 資料可見度延遲:整庫全增量至MaxCompute任務配置當天僅能查詢歷史全量資料,增量資料需要等待第二天Merge完成後才可在MaxCompute查詢,詳情請參見工作原理中資料寫入部分的內容。

  • 儲存與生命週期:整庫全增量同步處理任務每天會產生一個全量分區,為避免資料過多佔用儲存資源,同步任務自動建立的MaxCompute表,預設生命週期為30天。如果時間長度不滿足您的業務需求,可以在配置同步任務時單擊對應的MaxCompute表名修改生命週期。詳情請參見:編輯目標表結構(可選)

  • SLA:Data Integration使用MaxCompute引擎同步資料通道進行資料上傳和下載(同步資料通道SLA詳情請參見Data Transmission Service(上傳)情境與工具),請根據MaxCompute引擎同步資料通道SLA評估資料同步業務技術選型。

  • Binlog保留原則:即時同步依賴源端 MySQL 的 Binlog。需確保 Binlog 的保留時間長度足夠,以防因任務長時間暫停或失敗重試時找不到起始位點,導致同步中斷。

計費說明

  • 整庫全增量任務包括全量階段的離線同步任務,增量階段的即時同步任務以及周期Merge階段的周期任務,此三個階段的任務將分別計費:其中三個階段都會使用資源群組的CU,計費方式參見:Serverless資源群組計費,周期任務還會產生任務調度費用,詳情參見:調度執行個體數費用

  • 此外,整庫全增量同步處理至MaxCompute的同步鏈路需要定期做全增量資料周期合并,因此會消耗MaxCompute計算資源。這部分費用由MaxCompute直接收取,費用與使用者同步全量資料大小、合并周期正相關。具體費用請參考計費項目與計費方式

操作步驟

一、選擇同步任務類型

  1. 進入Data Integration頁面。

    登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的Data Integration > Data Integration,在下拉框中選擇對應工作空間後單擊進入Data Integration

  2. 在左側導覽列單擊同步任務,然後在頁面頂部單擊新建同步任務,在建立同步任務的彈窗中填寫以下關鍵資訊:

    • 數據來源類型MySQL

    • 數據去向類型MaxCompute

    • 任務名稱:自訂同步任務名稱。

    • 任務類型整庫全增量

    • 同步步驟結構遷移增量同步處理全量同步周期Merge

二、配置資料來源與資源群組

  1. 來來源資料源選擇已添加的MySQL資料來源,去向資料來源選擇已添加的MaxCompute資料來源。

  2. 運行資源地區,選擇同步任務所使用的資源群組,並為該任務分配資源群組CU。支援為全量同步和增量同步處理分別設定CU,以精確控制資源,避免浪費。

    說明

    DataWorks的離線同步任務通過調度資源群組將其下發到Data Integration任務執行資源組上執行,所以離線同步任務除了涉及Data Integration任務執行資源組外,還會佔用調度資源群組資源,將會產生調度執行個體費用。

  3. 並確保來來源資料源與去向資料來源均通過連通性檢查

三、選擇要同步的庫表

此步驟中,您可以在源端庫表地區選取項目源端資料來源下需要同步的表,並單擊image表徵圖,將其移動至右側已選庫表

image

若庫表數較多,可以使用庫過濾或者表過濾,或通過配置Regex來選擇需要同步的表。

四、任務相關配置

  • Log表時間範圍:此參數定義了從日誌表(Log Table)向目標資料分割合并資料時的時間查詢範圍。

    為避免因資料延遲導致的跨天分區錯誤,請適當延長此範圍,以確保所有屬於該分區的資料都能被正確合并。

  • Merge任務調度配置:設定每日Merge任務的調度時間。調度時間設定方式可參見:調度時間

  • 周期調度參數:設定調度參數,調度參數可在後續的分區設定中對分區進行賦值,滿足按日期寫入分區的需求。

  • 表分區設定:為目標表設定分區,可設定分區列名、賦值方式等關鍵參數,其中賦值列可通過使用調度參數來滿足按日期自動產生分區的情境。

五、目標表映射

在此步驟,您需要定義源表與目標表的映射規則,並指定主鍵、動態分區、DDL/DML配置等規則,以確定資料寫入方式。

操作

說明

重新整理映射

系統會自動列出您選擇的源端表,但目標表的具體屬性需要您重新整理確認後才會生效。

  • 批量選中需要同步的表,單擊批量重新整理映射。

  • 目標表名:目標表名將根據目標表名映射自訂規則自動產生。預設為 ${源端庫名}_${表名},如果目標端不存在此同名表,系統將自動為您建立。

目標表名映射自訂(可選)

系統存在預設的表名建置規則:${源端庫名}_${表名}。您也可以在目標表名映射自訂列,單擊編輯按鈕,新增自訂目標表名規則。

  • 規則名稱:定義規則名稱,建議為規則配置一個具有明確業務意義的名稱。

  • 目標表名:目標表名可以通過單擊image按鈕,選擇手動輸入內建變數進行拼接,產生目標表名。其中變數支援源端資料來源名,源端資料庫名和源端表名。

  • 編輯內建變數:內建變數可以在原有的基礎上進行字串轉換。

可實現如下情境:

  1. 名添加前尾碼:通過設定常量在源端表名的基礎上,添加首碼或者尾碼。

    規則配置

    應用效果

    image

    image

  2. 字串統一替換:將源端表名的字串dev_,統一替換為prd_

    規則配置

    應用效果

    image

    image

  3. 多張表寫入一張表。

    規則配置

    應用效果

    image

    image

編輯欄位類型映射(可選)

系統存在預設的源端欄位類型與目標端欄位類型映射,您可以單擊表格右上方的編輯欄位類型映射,自訂來源端表與目標端表欄位類型映射關係,配置完成後單擊應用並重新整理映射

編輯欄位類型映射時,需要注意欄位類型轉換規則是否正確,否則會導致類型轉換失敗而產生髒資料,影響任務運行。

編輯目標表結構(可選)

系統會根據自訂的表名映射規則,自動建立尚不存在的目標表,或複用已存在的同名表。

DataWorks將基於源端表結構自動產生目標表結構,常規情境下無需人工幹預。您也可以通過以下方式,修改表的表結構:

  • 單表新增欄位:單擊目標表名列的image.png按鈕添加欄位。

  • 批量新增欄位:選中待同步的所有表,在表格底部選擇批量修改 > 目標表結構-批量修改和新增欄位

  • 不支援重新命名列名。

已存在的表僅支援添加欄位;建立表添加欄位、分區欄位,設定表類型或表屬性等。詳見介面開放編輯地區。

目標表欄位賦值

原生欄位會根據源端表和目標表的同名欄位進行自動對應,上述步驟中的新增欄位需要手動賦值。操作如下:

  • 單表賦值:單擊目標表欄位賦值列的配置按鈕,為目標表欄位賦值。

  • 批量賦值:在列表底部選擇批量修改 > 目標表欄位賦值為目標表中相同的欄位進行批量賦值。

在賦值時支援賦值常量與變數,可在賦值方式中進行切換類型,支援方式如下:

  • 表欄位

    • 手動賦值:直接輸入常量值或者調度參數,如:abc${bizdate}

    • 選擇變數:選擇系統提供變數作為欄位值,變數類型參見介面描述。

    • 來源欄位:將源端表欄位的值作為欄位的值,其中取實值型別可選欄位值或者時間值。

      • 欄位值:若源端欄位為非時間類型,可以直接將源端欄位值寫入目標端欄位。

      • 時間值:若來源欄位中的值為時間,可根據不同的格式進行相應處理,並指定目標格式對分取值進行格式化。

        • 時間字串:表示時間的字串,如:2018-10-23 02:13:562021/05/18。通過指定源端和目標端的時間格式的方式將其序列化為時間。如上文舉例的字串,可以使用yyyy-MM-dd HH:mm:ssyyyy/MM/dd的格式進行序列化來識別。

        • 時間對象:如果來源值本身是DateDatetime這種時間類型的格式,請直接選擇該類型。

        • Unix時間戳記(秒):秒層級時間戳記,也支援符合10位時間戳記格式的數字或字串,比如1610529203“1610529203”

        • Unix時間戳記(毫秒):毫秒層級時間戳記,也支援符合13位時間戳記格式的數字或字串,比如1610529203002“1610529203002”

    • 函數:支援通過函數對來源欄位進行簡單變換後作為分區值。使用方式詳見:使用函數運算式為目標表欄位賦值

  • 分區欄位:支援按照來源欄位的枚舉值或者事件時間作為分區值動態建立分區。

    • 手動賦值:支援輸入常量值或在周期調度參數配置中已設定的調度參數,如:abc${bizdate}

設定源端切分列

您可以在源端切分列中下拉選擇源端表中的欄位或選擇不切分。同步任務執行時將根據該欄位切分為多個task,以便並發、分批讀取資料。

推薦使用表主鍵等資料分布均勻的欄位,作為源端切分列,不支援字串、浮點和日期等其他類型。

目前僅源端為MySQL時支援源端切分列。

是否跳過全量同步

若已在步驟三配置全量同步,可以單獨取消同步某個表的全量資料同步。適用於已經通過其他方式將全量資料同步至目標端的情境。

全量條件

在全量階段對源端進行條件過濾。此處只需寫where子句,不需要寫出where關鍵字。

DML規則配置

DML訊息處理用於在即時同步資料寫入目標端之前,對源端捕獲的變更資料(InsertUpdateDelete)進行精細化的過濾與控制,此規則僅在增量階段生效。

全量合并周期

當前只支援按天合并。可以在自訂合并時間中配置merge任務的具體調度時間。

合并主鍵

可以通過選擇表中的一列或多列來定義主鍵。

  • 單列主鍵:選擇本身具有唯一值的單列(如 id)作為主鍵。

  • 組合主鍵:若無唯一單列,可選擇多個列組合。此時,這些列的值組合必須能唯一標識每一行資料,以確保資料寫入時的唯一性,防止覆蓋。

六、DDL能力配置

即時同步部分鏈路可以感知源端表結構的中繼資料變更,並且通知目標端,使目標端同步更新,或採取其他諸如警示、忽略或終止運行等處理策略。

您可以單擊介面右上方的DDL能力配置,針對每一種變更類型設定對應的處理策略,不同的通道支援的處理策略不同。

  • 正常處理:由目標端處理源端的DDL變更資訊。

  • 忽略:忽略變更訊息,目標端不做修改。

  • 出錯:終止整庫即時同步任務,狀態置為出錯

  • 警示:當源端出現此類變更時,向使用者警示。需在報警配置中配置DDL通知規則。

說明

當源端新增列並通過DDL同步在目標端也建立了該列後,系統不會對目標表中的存量資料進行資料回填。

七、進階配置參數

如果需要對任務做精細化配置,達到自訂同步需求,可以單擊自訂進階參數列的配置,修改進階參數。

  1. 單擊介面右上方的進階參數配置,進入進階參數配置頁面。

  2. 根據參數提示,修改參數值,參數含義見參數名稱後的解釋。

重要

請在完全明白對應參數的含義情況下再進行修改,避免產生任務延時、資源佔用過大導致阻塞其他任務、資料丟失等不可預料的問題。

八、執行同步任務

  1. 完成所有配置後,單擊儲存,儲存任務。

  2. Data Integration > 同步任務介面,找到已建立的同步任務,單擊操作列的发布。發布時若勾選發布後直接啟動運行,則單擊確認後,任務會立即執行,否則需要手動啟動。

    說明

    Data Integration的任務需要發布至生產環境運行,因此建立或者編輯任務均需執行發布操作後方可生效。

  3. 單擊任務列表中對應任務的名稱/ID,查看任務的詳細執行過程。

後續步驟

完成任務配置後,您可以對已建立的任務進行管理、執行加減表操作,或對任務配置監控警示,並查看任務啟動並執行關鍵計量等。詳情請參見:全增量同步處理任務營運

常見問題

Q: 為什麼 Base 表資料未按預期更新資料?

A:以下為原因分析和解決方案:

image

現象

原因

解決方案

增量Log表T-1分區資料產出檢查失敗。

即時同步任務執行異常,導致增量Log表T-1分區資料未正常產出。

  • 檢查即時同步任務失敗原因,並從失敗位點重啟該任務。

    說明

    RDS Binlog保留時間長度有限制,若對應時間點Binlog被清理,即時同步將會報錯,提示位點找不到。

  • 為即時同步子任務設定監控警示。

目標端Base表T-2分區資料產出檢查失敗。

  1. 前一天Merge任務執行失敗。

  2. Base表前一天分區被刪除。

  • 為Merge節點配置運行狀態監控,詳情請參見:規則管理

  • 若誤刪除Base表T-2分區,請通過補資料功能將其補齊,補齊後,再重新運行Merge節點。詳情請參見:補資料執行個體營運