全部產品
Search
文件中心

DataWorks:MySQL一鍵即時同步至MaxCompute

更新時間:Jul 17, 2024

本文為您介紹如何通過DataWorksData Integration將MySQL全增量資料一體化同步至MaxCompute表中。

前提條件

  • 已完成MaxCompute和MySql資料來源配置。您需要將資料庫添加至DataWorks上,以便在同步任務配置時,可通過選擇資料來源名稱來控制同步讀取和寫入的資料庫。本實踐中建立的資料來源名為doc_mysql1,詳情請參見配置MySQL資料來源配置MaxCompute資料來源

    說明

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

  • 已購買合適規格的獨享Data Integration資源群組。詳情請參見:新增和使用獨享Data Integration資源群組

  • 已完成獨享Data Integration資源群組與資料來源的網路連通。詳情請參見:網路連通方案

  • 已完成資料來源環境準備。

    • MaxCompute:Decimal類型為MaxCompute 2.0支援的資料類型,所以在同步前,您需要先開啟MaxCompute2.0資料類型。詳情請參見2.0資料類型版本

    • MySQL:來來源資料源為MySQL時,您需要開啟Binlog相關功能,詳情請參見MySQL環境準備

需求分析

  • 資料:將MySQL全量資料一次性同步至MaxCompute,增量資料即時同步MaxCompute Log表,全增量資料定時Merge。

  • 表:將源端所有doc_首碼的表名,在寫入目標端時統一更新為ods_首碼。

  • 欄位:目標表在原有表結構基礎上,增加execute_time欄位用於記錄源端表某個記錄發生變更的時間。

綜合如上分析結果,最終的表對應關係如下所示:

源端資料庫

源端待同步表

寫入的目標表

目標表新增欄位

doc_demo1

doc_tb1

ods_tb1

execute_time

doc_tb2_nopk

ods_tb2_nopk

操作流程

  1. 建立同步任務

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

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

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

    4. 步驟四:設定目標表

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

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

  2. 執行同步任務

  3. 同步任務營運

建立同步任務

  1. 選擇同步方案。

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

  2. 配置網路連通。

    源端選擇已建立的資料來源doc_mysql1,目標資料來源為DataWorks工作空間建立的MaxCompute資料來源,並測試連通性。

  3. 設定同步來源與規則。

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

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

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

      本案例中選擇doc_demo1下的表doc_tb1doc_tb2_nopk

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

      同步時預設將源端資料表寫入目標端同名表中,您可以通過添加映射規則定義最終寫入目的端的表名稱。本案例通過源表名和目標表名轉換規則,將源端doc_首碼的表在寫入目標端時替換為ods_首碼。mysql2odps

  4. 設定目標表。

    1. 設定寫入模式

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

    2. 時間自動分區設定。

      您可以在時間自動分區設定配置該任務寫入MaxCompute分區表或是非分區表,並定義分區欄位的名稱,本案例中選擇寫入分區表,分區欄位為ds

      說明

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

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

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

      說明

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

      功能

      描述

      為非主鍵表選擇主鍵

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

      本案例為無主鍵表doc_tb2_nopk選擇id列承擔主鍵作用。

      選擇表建立方式

      支援自動建表使用已有表

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

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

      本案例選擇自動建表

      是否全量同步

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

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

      本案例開啟所有表的全量同步。

      為目標欄位添加附加欄位

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

      說明

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

      本案例新增欄位execute_time並為欄位賦值變數_execute_time_,用於記錄操作的執行時間。附加欄位

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

  5. 表粒度同步規則設定。

    對目標表進行單獨配置DML和大量設定DML規則,配置項有插入(INSERT)更新(UPDATE)和刪除(DELETE)。可配置的策略如下:

    • 正常處理:此DML訊息將會繼續下發給目標資料來源,由目標資料來源來處理。

    • 忽略:丟棄掉此DML訊息,不再向目標資料來源發送此訊息,對應資料不會改變。

    • 有條件的正常處理:按過濾運算式進行條件過濾,滿足過濾條件的資料會被正常處理,不滿足的會被忽略掉。

    • 如不設定,則預設為正常處理

    說明

    修改DML為非正常處理時,將導致源端和目標端資料不一致。

  6. DDL訊息處理策略。

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

    本方案使用預設處理規則。

  7. 設定任務運行資源。

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

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

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

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

執行同步任務

  1. 提交並發布任務。

  2. 單擊左上方的image後,選擇全部產品 > 營運中心(工作流程)進入營運中心頁面。

  3. 在營運中心的左邊菜單內單擊進入即時任務營運 > 即時同步任務頁面,對發行的即時任務在操作欄裡單擊提交即可。

說明

您可重點關注以下步驟中建立的表及節點任務名稱以便進行後續營運。例如,建立MaxCompute Log表、建立MaxCompute Base表、建立Data Integration即時同步任務、提交發布增全量Merge Into節點。

同步任務營運

同步至MaxCompute全增量Merge分為3個階段:

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

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

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

為避免上述階段出現異常導致資料未產出,我們需要分別為即時同步子任務及Merge節點進行監控。

  1. 即時同步警示配置。

    1. 進入即時任務營運頁面

    2. 找到已建立的即時同步任務,單擊操作列的警示設定,進入警示設定頁面。

    3. 在警示設定頁面,選擇警示規則>建立規則

      配置監控指標為任務狀態,閾值5分鐘,即當任務5分鐘內無心跳時觸發警示,其他配置項可根據需要進行配置,確認無誤後,單擊確定。詳情請參見:同步任務相關操作

  2. Merge節點監控警示配置。

    為避免全增量資料合併期間出現錯誤,影響Base表資料產出,建議您通過規則管理為該Merge節點設定監控警示。

    1. 在同步任務執行詳情頁面擷取到Merge任務名稱。詳情請參見:查看任務執行詳情

    2. 進入規則管理介面,單擊建立自訂規則,詳情請參見:規則管理

      在建立自訂規則頁面,選擇規則對象為該任務產生的Merge節點,並設定觸發條件出錯,其他配置項可根據您業務進行配置。

附:查詢資料

由於目前全增量Merge周期為一天,所以任務配置當天,我們只能在目標表查詢到同步的全量資料,待第二天后,可查詢到全增量Merge後的資料。

查看全量資料寫入情況

在資料開發介面找到ODPS SQL節點,通過命令查詢表資料,查詢資料前請先在Data Integration>任務營運介面確認執行步驟中,啟動全量資料初始化同步任務運行步驟已執行成功。建立ODPS SQL臨時查詢節點,詳情請參見建立臨時查詢查詢資料

查看即時同步的增量Log表資料

  • Data Integration>同步任務>執行詳情,查看建立MaxCompute Log表階段建立的Log表名稱。

  • 在資料開發介面找到ODPS SQL節點,通過命令查詢表資料,建立ODPS SQL臨時查詢節點,詳情請參見建立臨時查詢

    說明

    增量Log表的資料格式說明請參見即時同步欄位格式