本文為您介紹如何通過DataWorksData Integration將MySQL全增量資料一體化同步至MaxCompute表中。
前提條件
已完成MaxCompute和MySql資料來源配置。您需要將資料庫添加至DataWorks上,以便在同步任務配置時,可通過選擇資料來源名稱來控制同步讀取和寫入的資料庫。本實踐中建立的資料來源名為
doc_mysql1
,詳情請參見配置MySQL資料來源、配置MaxCompute資料來源。說明資料來源相關能力介紹詳情請參見:資料來源概述。
已購買合適規格的獨享Data Integration資源群組。詳情請參見:新增和使用獨享Data Integration資源群組。
已完成獨享Data Integration資源群組與資料來源的網路連通。詳情請參見:網路連通方案。
已完成資料來源環境準備。
需求分析
資料:將MySQL全量資料一次性同步至MaxCompute,增量資料即時同步MaxCompute Log表,全增量資料定時Merge。
表:將源端所有
doc_
首碼的表名,在寫入目標端時統一更新為ods_
首碼。欄位:目標表在原有表結構基礎上,增加
execute_time
欄位用於記錄源端表某個記錄發生變更的時間。
綜合如上分析結果,最終的表對應關係如下所示:
源端資料庫 | 源端待同步表 | 寫入的目標表 | 目標表新增欄位 |
doc_demo1 | doc_tb1 | ods_tb1 | execute_time |
doc_tb2_nopk | ods_tb2_nopk |
操作流程
建立同步任務
選擇同步方案。
建立同步解決方案任務,選擇需要同步的源端資料來源MySQL,目標端資料來源MaxCompute,並選擇一鍵即時同步至MaxCompute方案。
配置網路連通。
源端選擇已建立的資料來源
doc_mysql1
,目標資料來源為DataWorks工作空間建立的MaxCompute資料來源,並測試連通性。設定同步來源與規則。
在基本配置地區,配置同步解決方案的名稱、任務存放位置等資訊。
在資料來源地區,確認需要同步的源端資料來源相關資訊。
在選擇同步的源表地區,選中需要同步的源表,單擊表徵圖,將其移動至已選源表。
本案例中選擇
doc_demo1
下的表doc_tb1
、doc_tb2_nopk
。在設定表(庫)名的映射規則地區,單擊添加規則,選擇相應的規則進行添加。
同步時預設將源端資料表寫入目標端同名表中,您可以通過添加映射規則定義最終寫入目的端的表名稱。本案例通過源表名和目標表名轉換規則,將源端
doc_
首碼的表在寫入目標端時替換為ods_
首碼。
設定目標表。
設定寫入模式。
目前支援將增量資料即時寫入MaxCompute的Log表,Log表中的增量資料再定期與目標端Base表全量資料進行合并(Merge),最終將結果寫入Base表中。
時間自動分區設定。
您可以在時間自動分區設定配置該任務寫入MaxCompute分區表或是非分區表,並定義分區欄位的名稱,本案例中選擇寫入分區表,分區欄位為
ds
。說明若選擇寫入分區表,可單擊表徵圖定義目標表分區欄位名稱。
重新整理源表與目標表映射。
單擊重新整理源表和MaxCompute表映射將根據您在步驟三配置的目標檔案映射規則來產生目標表,若步驟三未配置映射規則,將預設寫入與源表同名的目標表,若目標端不存在該同名表,將預設建立。同時,您可以修改表建立方式、為目標表在源有表欄位基礎上增加附加欄位。
說明目標表名將根據您在設定表(庫)名的映射規則階段配置的表名轉換規則自動轉換。
功能
描述
為非主鍵表選擇主鍵
由於當前方案不支援無主鍵表同步,所以您需要單擊同步主鍵列的按鈕,為無主鍵表設定自選主鍵,即選擇表中一個或部分欄位作為主鍵,寫入目標端時將會使用該主鍵進行去重。
本案例為無主鍵表
doc_tb2_nopk
選擇id
列承擔主鍵作用。選擇表建立方式
支援自動建表和使用已有表。
當表建立方式選擇使用已有表時,MaxComputeBase 表名列顯示自動建立的表名稱。您也可以在下拉式清單中選擇需要使用的表名稱。
當表建立方式選擇自動建表時,顯示自動建立的表名稱。您可以單擊表名稱,查看和修改建表語句。
本案例選擇自動建表。
是否全量同步
您可以在全量同步列選擇是否需要在即時同步前先將全量資料同步至目標端。
如果關閉全量同步,則對應的表將不進行離線全量同步。適用於已經通過其他方式將全量資料同步至目標端的情境。
本案例開啟所有表的全量同步。
為目標欄位添加附加欄位
單擊操作列的編輯附加欄位,可以為目標表在源端欄位的基礎上增加欄位並為欄位賦值。支援手動賦值常量與變數。
說明僅在表建立方式為自動建表時,可以使用此功能。
本案例新增欄位
execute_time
並為欄位賦值變數_execute_time_
,用於記錄操作的執行時間。目標表、欄位及資料讀取寫入關係確認無誤後,單擊下一步。
表粒度同步規則設定。
對目標表進行單獨配置DML和大量設定DML規則,配置項有插入(INSERT)、更新(UPDATE)和刪除(DELETE)。可配置的策略如下:
正常處理:此DML訊息將會繼續下發給目標資料來源,由目標資料來源來處理。
忽略:丟棄掉此DML訊息,不再向目標資料來源發送此訊息,對應資料不會改變。
有條件的正常處理:按過濾運算式進行條件過濾,滿足過濾條件的資料會被正常處理,不滿足的會被忽略掉。
如不設定,則預設為正常處理。
說明修改DML為非正常處理時,將導致源端和目標端資料不一致。
DDL訊息處理策略。
來來源資料源會包含許多DDL操作,Data Integration體提供預設處理策略,您也可以根據業務需求,對不同的DDL訊息設定同步至目標端的處理策略。不同DDL訊息處理策略請參見:DDL訊息處理規則。
本方案使用預設處理規則。
設定任務運行資源。
當前方案建立後將分別產生全量資料離線同步子任務和增量資料即時同步子任務。您需要在運行資源設定介面配置離線同步任務和即時同步任務的相關屬性。
包括即時增量同步處理及離線全量同步使用的獨享Data Integration資源群組、離線全量同步使用的調度資源群組,同時,單擊進階配置可配置是否容忍髒資料、任務最大並發數、源庫允許支援的最大串連數等參數。
說明DataWorks的離線同步任務通過調度資源群組將其下發到Data Integration任務執行資源組上執行,所以離線同步任務除了涉及Data Integration任務執行資源組外,還會佔用調度資源群組資源。如果使用了獨享調度資源群組,將會產生調度執行個體費用。您可通過任務下發機制對該機制進行瞭解。
離線和即時同步任務推薦使用不同的資源群組,以便任務分開執行。如果選擇同一個資源群組,任務混跑會帶來資源搶佔、運行態互相影響等問題。例如,CPU、記憶體、網路等互相影響,可能會導致離線任務變慢或即時任務延遲等問題,甚至在資源不足的極端情況下,可能會出現任務被OOM KILLER殺掉等問題。
執行同步任務
提交並發布任務。
單擊左上方的後,選擇
進入營運中心頁面。在營運中心的左邊菜單內單擊進入
頁面,對發行的即時任務在操作欄裡單擊提交即可。
您可重點關注以下步驟中建立的表及節點任務名稱以便進行後續營運。例如,建立MaxCompute Log表、建立MaxCompute Base表、建立Data Integration即時同步任務、提交發布增全量Merge Into節點。
同步任務營運
同步至MaxCompute全增量Merge分為3個階段:
任務配置當天,執行全量資料初始化的離線同步任務。
任務配置當天,待全量資料初始化完成後,啟動即時同步任務,將增量資料即時同步至MaxCompute Log表。
任務配置第二天,Merge任務將Base表全量資料與即時同步任務的增量資料進行Merge,最後將結果寫入Base表。目前Merge周期為1天。
為避免上述階段出現異常導致資料未產出,我們需要分別為即時同步子任務及Merge節點進行監控。
附:查詢資料
由於目前全增量Merge周期為一天,所以任務配置當天,我們只能在目標表查詢到同步的全量資料,待第二天后,可查詢到全增量Merge後的資料。
查看全量資料寫入情況
在資料開發介面找到ODPS SQL節點,通過命令查詢表資料,查詢資料前請先在Data Integration>任務營運介面確認執行步驟中,啟動全量資料初始化同步任務運行步驟已執行成功。建立ODPS SQL臨時查詢節點,詳情請參見建立臨時查詢。