本文以MySQL分庫分表即時寫入MaxCompute情境為例,為您介紹如何通過Data Integration同步分庫分表資料至MaxCompute。
前提條件
已完成MaxCompute和MySQL資料來源配置。您需要將資料庫添加至DataWorks上,以便在同步任務配置時,可通過選擇資料來源名稱來控制同步讀取和寫入的資料庫。詳情請參見配置MySQL資料來源、配置MaxCompute資料來源。
說明資料來源相關能力介紹詳情請參見:資料來源概述。
已購買合適規格的獨享Data Integration資源群組。詳情請參見:新增和使用獨享Data Integration資源群組。
已完成獨享Data Integration資源群組與資料來源的網路連通。詳情請參見:配置資源群組與網路連通。
已完成資料來源環境準備。
MaxCompute:讀取或寫入MaxCompute表資料時,您可以根據需要選擇是否開啟相關屬性。詳情請參見MaxCompute環境準備。
MySQL:來來源資料源為MySQL時,您需要開啟Binlog相關功能,詳情請參見MySQL環境準備。
背景資訊
實際業務情境下資料同步通常不能通過一個或多個簡單離線同步或者即時同步任務完成,而是由多個離線同步、即時同步和資料處理等工作群組合完成,這就會導致資料同步情境下的配置複雜度非常高。尤其是在MySQL分庫分表的情境下,上遊的資料庫和表非常多,都需要同時寫入一張MaxCompute表,如果同時配置多個任務會導致配置非常複雜且營運困難。
針對以上痛點,DataWorksData Integration一鍵同步解決方案提供了面向業務情境的同步任務配置化方案,支援不同資料來源的一鍵同步功能,方便業務簡單快速的進行資料同步。
分庫分表同步至MaxCompute解決方案是一種基於Binlog即時同步、T+1合并產生離線表的即時同步解決方案。即時同步資料寫入Log表中,Base表每一個天分區儲存全量資料。然後每天運行合并任務合并前一天的Base表分區、Log表即時資料,產出新的全量分區,在查詢資料時,一般需要查詢Base表最新分區。
使用限制
同步資源群組:
分庫分表同步至MaxCompute需要使用DataWorks獨享Data Integration資源群組。
跨時區同步限制:
同步解決方案暫不支援跨時區同步資料。如果同步任務中同步的資料來源與使用的DataWorks資源群組不在同一個時區,則會導致同步的資料有誤。
操作流程
步驟一:選擇同步方案
建立同步解決方案任務,選擇需要同步的源端資料來源MySQL,目標端資料來源MaxCompute,並選擇分庫分表即時同步至MaxCompute方案。
步驟二:網路與資源配置
源端選擇環境準備步驟中已建立的資料來源,目標資料來源為步驟一的MaxCompute資料來源。並測試連通性。
您需要根據業務需要定義讀取源端資料庫所使用的編碼格式,及同步任務區源端資料庫讀取資料時所使用的時區。
步驟三:分庫源表設定
分庫分表解決方案同步的最小單位是邏輯表,一個邏輯表對應一套物理庫表規則、一個目標base表。自動產生邏輯表的功能,可以大大簡化邏輯表的配置步驟,一般情況下,我們都可以使用自動產生邏輯表來掃描源端資料來源,簡化大部分配置操作。如果自動掃描的結果不符合預期,只需要對自動掃描的結果做簡單修正即可。複雜的物理庫表規則可以使用手動添加邏輯表功能實現。
自動產生邏輯表
單擊自動產生邏輯表,在資料來源列表中選擇部分資料來源,用作產生邏輯表的掃描資料來源。
在配置邏輯表建置規則地區,單擊新增規則,您可以選擇預置規則或手動輸入相應的規則進行添加。
本例中使用2個預設規則產生邏輯表:
將來源表名僅尾碼數字不同的表合并為目標表。
直接將來源表名相同的表合并為目標表。
手工添加邏輯表
在自動產生邏輯表與期望的匹配結果不符時,可以編輯邏輯表匹配規則,也可以通過手工添加邏輯表添加沒有掃描到的邏輯表。
單擊手工添加邏輯表,有幾個邏輯表需要同步,就在此處添加幾個。同一邏輯表的資料會同步到目標表中。
設定源庫或源表限定條件。
每一個同步表的限定條件分為庫限定條件和表限定條件,您可以在源表選擇限定條件和源庫選擇限定條件地區單擊添加條件分別添加限定條件,同步任務執行時將依據此規則對於源庫和源表進行搜尋整合,作為目標表的分庫分表來源。
大量編輯庫規則
分庫規則可以限定來源庫條件,這個限定條件可以被應用到所有的同步表。例如,資料都來自xiaobo1/xiaobo2/xiaobo3
等資料庫,那麼就可以添加下圖所示的分庫規則限定條件:
步驟四:設定目標表
設定寫入模式。
目前支援將增量資料即時寫入MaxCompute的Log表,Log表中的增量資料再定期與目標端Base表全量資料進行合并(Merge),最終將結果寫入Base表中。
時間自動分區設定。
您可以在時間自動分區設定配置該任務寫入MaxCompute分區表或是非分區表,並定義分區欄位的名稱,本案例中選擇寫入分區表,分區欄位為
ds
。說明若選擇寫入分區表,可單擊表徵圖定義目標表分區欄位名稱。
重新整理源表與目標表映射。
單擊重新整理源表和MaxCompute表映射映射出現目標表列表。
功能
描述
為非主鍵表選擇主鍵
由於當前方案不支援無主鍵表同步,所以您需要單擊同步主鍵列的按鈕,為無主鍵表設定自選主鍵,即選擇表中一個或部分欄位作為主鍵,寫入目標端時將會使用該主鍵進行去重。
本案例為無主鍵表選擇
id
列承擔主鍵作用。編輯目標表結構
單擊MaxCompute表名,可以預覽MaxCompute表結構,在建立MaxCompute表時,Data Integration會給MaxCompute自動加上一列
_src_info_
用於標識這行資料來自哪個子表。_src_info_
配合源表主鍵,也可以用於唯一定位一行資料。說明目前自動建表產生的MaxCompute表生命週期預設只有30天,並且可能存在欄位類型映射,即若目標端資料庫中沒有與源端一致的資料類型時,同步任務在自動建立目標表時,將自動為源端欄位匹配目標端可寫入的欄位類型。若您需要修改MaxCompute表生命週期或修改目標表欄位類型映射,您可單擊MaxCompute表名列的目標表名進行修改。
選擇表建立方式
支援自動建表和使用已有表。
當表建立方式選擇使用已有表時,MaxComputeBase 表名列顯示自動建立的表名稱。您也可以在下拉式清單中選擇需要使用的表名稱。
當表建立方式選擇自動建表時,顯示自動建立的表名稱。您可以單擊表名稱,查看和修改建表語句。
本案例選擇自動建表。
是否全量同步
您可以在全量同步列選擇是否需要在即時同步前先將全量資料同步至目標端。
如果關閉全量同步,則對應的表將不進行離線全量同步。適用於已經通過其他方式將全量資料同步至目標端的情境。
本案例開啟所有表的全量同步。
目標表、欄位及資料讀取寫入關係確認無誤後,單擊下一步。
步驟五:設定表粒度同步規則
本解決方案支援配置DML同步規則。例如,當您需要在離線表裡保留源庫刪除的資料,您可以這樣配置:即當源表發生插入、更新、刪除時,您可以在此處定義對應的處理策略。
正常處理:源端DML訊息將會繼續下發給目標資料來源,由目標資料來源來處理。
忽略:直接丟棄該訊息,不再向目標資料來源發送對應的DML訊息,對應資料不會改變。
有條件的正常處理:選擇後,您可以配置過濾條件,同步任務將按照您配置的過濾運算式對源端資料進行過濾,滿足過濾條件的資料會被正常處理,不滿足的會被忽略掉。
若不設定,則預設為“正常處理”。
步驟六:DDL訊息處理規則
來來源資料源會包含許多DDL操作,Data Integration體提供預設處理策略,您也可以根據業務需求,對不同的DDL訊息設定同步至目標端的處理策略。不同DDL訊息處理策略請參見:DDL訊息處理規則。
步驟七:設定任務運行資源
當前方案建立後將分別產生全量資料離線同步子任務和增量資料即時同步子任務。您需要在運行資源設定介面配置離線同步任務和即時同步任務的相關屬性。
包括即時增量同步處理及離線全量同步使用的獨享Data Integration資源群組、離線全量同步使用的調度資源群組,同時,單擊進階配置可配置是否容忍髒資料、任務最大並發數、源庫允許支援的最大串連數等參數。
DataWorks的離線同步任務通過調度資源群組將其下發到Data Integration任務執行資源組上執行,所以離線同步任務除了涉及Data Integration任務執行資源組外,還會佔用調度資源群組資源。如果使用了獨享調度資源群組,將會產生調度執行個體費用。您可通過任務下發機制對該機制進行瞭解。
離線和即時同步任務推薦使用不同的資源群組,以便任務分開執行。如果選擇同一個資源群組,任務混跑會帶來資源搶佔、運行態互相影響等問題。例如,CPU、記憶體、網路等互相影響,可能會導致離線任務變慢或即時任務延遲等問題,甚至在資源不足的極端情況下,可能會出現任務被OOM KILLER殺掉等問題。
步驟八:執行同步任務
進入 介面,找到已建立的同步方案。
單擊操作列的啟動/提交執行按鈕,啟動同步的運行。
單擊操作列的執行詳情,查看任務的詳細執行過程。
後續步驟
完成任務配置後,您可以對已建立的任務進行管理、執行加減表操作,或對任務配置監控警示,並查看任務啟動並執行關鍵計量等。詳情請參見:全增量同步處理任務營運。