全部產品
Search
文件中心

DataWorks:一鍵即時同步至MaxCompute

更新時間:Jun 26, 2024

一鍵即時同步至MaxCompute方案支援全增量一體化同步,先進行全量資料移轉,然後再即時同步增量資料至目標端。本文為您介紹如何建立一鍵即時同步至MaxCompute任務。

前提條件

  1. 已完成資料來源配置。您需要在Data Integration同步任務配置前,配置好您需要同步的源端和目標端資料庫,以便在同步任務配置過程中,可通過選擇資料來源名稱來控制同步任務的讀取和寫入資料庫。同步任務支援的資料來源及其配置詳情請參見支援的資料來源及同步方案

    說明

    資料來源相關能力介紹詳情請參見:資料來源概述

  2. 已完成資料來源環境準備。您可以基於您需要進行的同步配置,在同步任務執行前,授予資料來源配置的帳號在資料庫進行相應操作的許可權。詳情請參見:資料庫環境準備概述

背景資訊

本方案運行後會自動建立Merge任務,用於將全增量資料進行合并,其中,增量資料即時寫入MaxCompute的Log表,Log表再定期與Base表進行合并(Merge),最終將結果寫入Base表中。目前全增量Merge的頻率為一天一次。

方案屬性

說明

可同步的表個數

  • 支援將源端多表資料寫入至目標端多表。

  • 支援通過目標表配置規則實現源端多表資料寫入至目標端單表。

工作群組成

當前方案將分別建立用於全量資料初始化的離線同步子任務,和用於增量資料即時同步的Data Integration即時同步子任務,方案產生的離線同步子任務個數與最終讀取的表個數有關。

資料寫入

支援全增量資料即時寫入,也支援僅進行增量資料即時同步。全增量Merge分為3個階段:

  1. 任務配置當天,執行全量資料初始化的離線同步任務。

  2. 任務配置當天,待全量資料初始化完成後,啟動即時同步任務,將增量資料即時同步至MaxCompute Log表。

  3. 任務配置第二天,Merge任務將Base表全量資料與即時同步任務的增量資料進行Merge,最後將結果寫入Base表。

說明
  • 全量資料初始化完成後,該離線同步任務將會被凍結。

  • 支援寫入MaxCompute分區表與非分區表。

以寫入分區表為例:一鍵即時同步

注意事項

  • 當即時同步至MaxCompute資料來源且使用臨時AK進行同步時,臨時AK超過7天會自動到期,同時,將導致任務運行失敗。平台檢測到臨時AK導致任務失敗時會自動重啟任務,如果任務配置了該類型的監控警示,您將會收到警示資訊。

  • 一鍵即時同步至MaxCompute任務配置當天僅能查詢歷史全量資料,增量資料需要等待第二天merge完成後才可在MaxCompute查詢,詳情請參見背景資訊中資料寫入部分中的內容。

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

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

  • 一鍵即時同步至MaxCompute,按執行個體模式同步時,獨享Data Integration資源群組規格最低需要為8C16G。

使用限制

僅支援與當前工作空間同地區的自建MaxCompute資料來源,跨地區的MaxCompute專案在測試資料來源服務連通性時可以正常連通,但同步任務執行時,在MaxCompute建表階段會報引擎不存在的錯誤。

說明

使用自建MaxCompute時,DataWorks工作空間的資料開發中仍需要綁定MaxCompute資料來源,否則將無法建立MaxCompute SQL節點,導致全量同步標done節點建立失敗。

計費說明

一鍵即時同步至MaxCompute解決方案需要定期做全增量資料周期合并,因此會消耗MaxCompute計算資源。這部分費用由MaxCompute直接收取,費用與使用者同步全量資料大小、合并周期正相關。具體費用請參考計費項目與計費方式概述

操作流程

  1. 步驟一:選擇同步方案

  2. 步驟二:配置網路連通

  3. 步驟三:設定同步來源與規則

  4. 步驟四:設定目標表

  5. 步驟五:DDL訊息處理策略

  6. 步驟六:設定任務運行資源

  7. 步驟七:執行同步任務

步驟一:選擇同步方案

建立同步解決方案任務,根據需求選擇需要同步的源端資料來源,目標端資料來源MaxCompute,並選擇一鍵即時同步至MaxCompute方案。

步驟二:配置網路連通

源端選擇已建立的源端資料來源與目標端資料來源,以及用於執行同步任務的資源群組。並測試資源群組與資料來源的網路連通。詳情請參見:配置同步網路連結

步驟三:設定同步來源與規則

  1. 基本配置地區,配置同步解決方案的名稱、任務存放位置等資訊。

  2. 資料來源地區,確認需要同步的源端資料來源相關資訊。

  3. 選擇同步的源表地區,選中需要同步的源表,單擊表徵圖表徵圖,將其移動至已選源表

    該地區會為您展示所選資料來源下所有的表,您可以選擇整庫全表或部分表進行同步。

  4. 設定表(庫)名的映射規則地區,單擊添加規則,選擇相應的規則進行添加。

    同步時預設將源端資料表寫入目標端同名表中,如果目標端不存在該表,將會自動建立。同時,您可以通過添加映射規則定義最終寫入目的端的表名稱。映射規則包括源表名和目標表名轉換規則目標表名規則

    • 源表名和目標表名轉換規則:源端表名支援通過Regex轉換為目標端最終寫入的表名。

      • 樣本1:將源端doc_首碼的表資料,寫入首碼為pre_的目標表中。改名

      • 樣本2:將多張表資料寫入到一張目標表。

        將源端名稱為 "table_01","table_02","table_03" 的表同步至一張名為 "my_table" 的表中。配置正則表名轉換規則為::table.*,目標:my_table。樣本

    • 目標表名規則:支援您使用內建的變數組合產生目標表名,同時,對轉換後的目標表名支援添加首碼和尾碼。可使用的內建變數有:

      • ${db_table_name_src_transed}:“源表名和目標表名轉換規則”中的轉換完成之後的表名。

      • ${db_name_src_transed}:“源庫名和目標Schema名轉換規則”中的轉換完成之後的目標Schema名。

      • ${ds_name_src}:來源資料源名。

      樣本:對上一步源表名和目標表名轉換規則轉換後的表名做進一步字串拼接處理,使用${db_table_name_src_transed}代表上一步的處理結果“my_table”,再為該內建變數增加首碼和尾碼,例如,pre_${db_table_name_src_transed}_post,最終就映射到了名為“pre_my_table_post”的目標表。

步驟四:設定目標表

  1. 設定寫入模式

    目前支援將增量資料即時寫入MaxCompute的Log表,Log表中的增量資料再定期與目標端Base表全量資料進行合并(Merge),最終將結果寫入Base表中。

  2. 時間自動分區設定。

    您可以在時間自動分區設定配置該任務寫入MaxCompute分區表或是非分區表,並定義分區欄位的名稱。

    說明

    若選擇寫入分區表,可單擊編輯表徵圖定義目標表分區欄位名稱。

  3. 重新整理源表與目標表映射。

    單擊重新整理源表和MaxCompute表映射將根據您在步驟三配置的目標表名映射規則來產生目標表,若步驟三未配置映射規則,將預設寫入與源表同名的目標表,若目標端不存在該同名表,將預設建立。同時,您可以修改表建立方式,為目標表在源有表欄位基礎上增加附加欄位。

    說明

    目標表名將根據您在設定表(庫)名的映射規則階段配置的表名轉換規則自動轉換。

    功能

    描述

    為非主鍵表選擇主鍵

    由於當前方案不支援無主鍵表同步,所以您需要單擊同步主鍵列的編輯按鈕,為無主鍵表設定自選主鍵,即選擇表中一個或部分欄位作為主鍵,寫入目標端時將會使用該主鍵進行去重。

    選擇表建立方式

    支援自動建表使用已有表

    • 表建立方式選擇使用已有表時,MaxComputeBase 表名列顯示已有MaxCompute表。您也可以在下拉式清單中選擇需要使用的表名稱。

    • 表建立方式選擇自動建表時,顯示自動建立的表名稱。您可以單擊表名稱,查看和修改建表語句。

    是否全量同步

    您可以在全量同步列選擇是否需要在即時同步前先將全量資料同步至目標端。

    如果關閉全量同步,則對應的表將不進行離線全量同步。適用於已經通過其他方式將全量資料同步至目標端的情境。

    為目標欄位添加附加欄位

    單擊操作列的編輯附加欄位,可以為目標表在源端欄位的基礎上增加欄位並為欄位賦值。支援手動賦值常量與變數。

    說明

    僅在表建立方式自動建表時,可以使用此功能。

    Data Integration附加欄位支援的變數欄位如下:

    EXECUTE_TIME:執行時間
    UPDATE_TIME:更新時間
    DB_NAME_SRC:未經處理資料庫名稱
    DB_NAME_SRC_TRANSED:轉換後資料庫名稱
    DATASOURCE_NAME_SRC:源端資料來源名稱
    DATASOURCE_NAME_DEST:目的端資料來源名稱
    DB_NAME_DEST:目的端資料庫名稱
    TABLE_NAME_DEST:目的端表名稱
    TABLE_NAME_SRC:源端表名稱

    編輯目標表結構

    目前自動建表產生的MaxCompute表生命週期預設只有30天,並且可能存在欄位類型映射,即若目標端資料庫中沒有與源端一致的資料類型時,同步任務在自動建立目標表時,將自動為源端欄位匹配目標端可寫入的欄位類型。若您需要修改MaxCompute表生命週期或修改目標表欄位類型映射,您可單擊MaxComputeBase 表名列的目標表名進行修改。

    說明

    僅在表建立方式自動建表時,可以使用此功能。

  4. 目標表、欄位及資料讀取寫入關係確認無誤後,單擊下一步

步驟五:DDL訊息處理策略

來來源資料源會包含許多DDL操作,Data Integration體提供預設處理策略,您也可以根據業務需求,對不同的DDL訊息設定同步至目標端的處理策略。不同DDL訊息處理策略請參見:DDL訊息處理規則

步驟六:設定任務運行資源

當前方案建立後將分別產生全量資料離線同步子任務和增量資料即時同步子任務。您需要在運行資源設定介面配置離線同步任務和即時同步任務的相關屬性。

包括即時增量同步處理及離線全量同步使用的獨享Data Integration資源群組、離線全量同步使用的調度資源群組,同時,單擊進階配置可配置是否容忍髒資料、任務最大並發數、源庫允許支援的最大串連數等參數。

說明
  • DataWorks的離線同步任務通過調度資源群組將其下發到Data Integration任務執行資源組上執行,所以離線同步任務除了涉及Data Integration任務執行資源組外,還會佔用調度資源群組資源。如果使用了獨享調度資源群組,將會產生調度執行個體費用。您可通過任務下發機制對該機制進行瞭解。

  • 離線和即時同步任務推薦使用不同的資源群組,以便任務分開執行。如果選擇同一個資源群組,任務混跑會帶來資源搶佔、運行態互相影響等問題。例如,CPU、記憶體、網路等互相影響,可能會導致離線任務變慢或即時任務延遲等問題,甚至在資源不足的極端情況下,可能會出現任務被OOM KILLER殺掉等問題。

步驟七:執行同步任務

  1. 進入Data Integration > 同步任務介面,找到已建立的同步方案。

  2. 單擊操作列的啟動/提交執行按鈕,啟動同步的運行。

  3. 單擊操作列的執行詳情,查看任務的詳細執行過程。

後續步驟

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

附:Base表資料未產出排查思路

Merge流程

現象

原因

解決方案

一鍵odpsmerge邏輯

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

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

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

    說明

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

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

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

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

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