當您需要實現更精細化的組態管理時,您可以使用指令碼模式配置離線同步任務,通過編寫資料同步的JSON指令碼並結合DataWorks調度參數使用,將源端單表或分庫分表的全量或增量資料周期性同步至目標資料表。本文為您介紹指令碼模式配置離線同步任務的常見配置,各資料來源配置存在一定差異,請以具體資料來源配置文檔為準。
背景資訊
Data Integration離線同步,為您提供資料讀取(Reader)和寫入外掛程式(Writer)實現資料的讀取與寫入,您可通過嚮導模式和指令碼模式配置離線同步任務,實現源端單表同步至目標端單表、源端分庫分表同步至目標端單表兩類資料同步情境。詳情請參見離線同步能力說明。
使用情境
以下情境可使用指令碼模式配置同步任務:
資料來源本身不支援使用嚮導模式配置任務。
說明資料來源是否支援嚮導模式,以介面提示為準。
部分資料來源的配置參數僅支援使用指令碼模式配置任務。
部分不支援在DataWorks建立的資料來源可以通過指令碼模式配置。
前提條件
已完成資料來源配置。在設定Data Integration同步任務之前,請確保已在DataWorks的資料來源管理中配置好所需的來源資料庫和目標資料庫。資料來源配置詳情請參見資料來源列表。
說明離線同步支援的資料來源及其配置詳情請參見支援的資料來源與讀寫外掛程式。
資料來源相關能力介紹詳情請參見:資料來源概述。
已購買合適規格的獨享Data Integration資源群組。詳情請參見:新增和使用獨享Data Integration資源群組。
獨享Data Integration資源群組與資料來源網路已打通。詳情請參見:配置資源群組與網路連通。
進入資料開發介面
進入資料開發頁面。
登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的 ,在下拉框中選擇對應工作空間後單擊進入資料開發。
開發流程
步驟一:建立離線同步節點
建立商務程序。詳情請參見:建立商務程序。
建立離線同步節點。
你可以通過以下兩種方式建立離線同步節點:
方式一:展開商務程序,按右鍵
。方式二:雙擊商務程序名稱,將Data Integration目錄下的離線同步節點直接拖拽至右側商務程序編輯面板。
根據介面提示建立離線同步節點。
步驟二:配置同步網路連結
選擇離線同步任務的資料來源和資料去向,以及用於執行同步任務的資源群組,並測試連通性。
支援同步源端分庫分表資料至目標單表,詳情請參見:情境:配置分庫分表離線同步任務。
若資料來源與資源群組網路不通,請參考介面提示或文檔進行網路連通配置。詳情請參見:配置資源群組與網路連通。
步驟三:轉指令碼模式並匯入模板
單擊工具列中的轉換指令碼表徵圖。
如果指令碼還未配置,您可以通過單擊工具列中的表徵圖,根據介面提示快速匯入指令碼模板。
步驟四:編輯指令碼,配置同步任務
指令碼模式通用配置如下:
type、version欄位為預設值,不可修改。
您可忽略指令碼中Processor相關配置(不需要配置)。
配置讀端與寫端的基礎資訊與欄位對應關係。
重要各外掛程式配置存在一定差異,以下內容僅以常見配置為例進行說明,各外掛程式是否支援相關配置以及配置的具體實現,請以具體外掛程式配置文檔為準。詳情請參見支援的資料來源與讀寫外掛程式。
通過配置參數您可以:
讀取端(Reader)
操作
說明
配置同步範圍
部分外掛程式可利用過濾參數實現增量同步處理,例如,通過MySQL Reader外掛程式同步MySQL資料時,使用MySQL Reader外掛程式的where參數結合DataWorks調度參數實現增量同步處理。關於增量資料同步配置詳情請參見:情境:配置增量資料離線同步任務。
說明具體外掛程式是否支援增量同步處理,及對應增量同步處理的具體實現,各個外掛程式存在差異,請以實際外掛程式文檔為準。
支援增量同步處理相關參數的外掛程式在配置同步任務時,若不配置資料過濾條件,則預設同步全量資料。
在資料過濾和目標表相關配置中定義的變數,當單擊下一步,配置調度屬性時,您可以為此處定義的變數賦值。實現增量或全量資料寫入目標表對應時間分區等功能,關於調度參數的使用詳情請參見:調度參數支援的格式。
增量同步處理過濾條件的文法與資料庫文法基本一致,同步時,離線同步將拼接為完整SQL向對應資料來源抽取資料。
關係型資料庫配置切分鍵
定義將源端待同步資料基於源端哪一個欄位進行切分,同步任務執行時將根據該欄位切分為多個task,以便並發、分批讀取資料。
說明推薦splitPk使用者使用表主鍵,因為表主鍵通常情況下比較均勻,因此切分出來的分區也不容易出現資料熱點。
目前splitPk僅支援整型資料切分,不支援字串、浮點和日期等其他類型 。如果您指定其他非支援類型,將會忽略splitPk功能,使用單通道進行同步。
如果不填寫splitPk,包括不提供splitPk或者splitPk值為空白,資料同步視作使用單通道同步該表資料 。
並非所有外掛程式均支援指定切分鍵配置任務切分邏輯,以上僅為樣本,請以具體外掛程式說明為準。詳情請參見支援的資料來源與讀寫外掛程式。
為目標欄位賦值
支援在源表待同步欄位(column)上,為目標表增加常量與變數。例如,‘123’、'${變數名}'。在此處定義的變數,當單擊下一步,配置調度時,可以為變數賦值。關於調度參數的使用詳情請參見:調度參數支援的格式。
編輯源端表欄位
您可使用源端資料庫支援的函數,對欄位進行函數處理,例如,通過Max(id)控制僅同步最大值。
說明MaxCompute Reader暫不支援使用函數。
寫入端(Writer)
操作
說明
配置同步前後執行語句
部分資料來源支援在同步前(資料寫入目標端資料來源前)與同步完成後(資料寫入目標端後),在目標端執行相關資料庫SQL。
樣本:MySQL Writer支援配置preSql與postSql,即在資料寫入MySQL前或後,可以執行一些MySQL命令。例如在MySQL Writer端匯入前準備語句(preSql)配置項中配置MySQL清空表命令
truncate table tablename
,實現同步前(寫入MYSQL資料前)先清空表中的舊資料的操作。定義衝突時的寫入模式
定義路徑或主鍵等情境衝突時以何種方式寫入目標端。該配置根據資料來源本身特性及writer外掛程式支援情況,此處配置不同。您需要參考具體writer外掛程式進行配置。
通道控制。
您可以在setting域中進行效率配置,主要包括並發數設定、同步速率設定、同步髒資料設定等資訊。
參數
描述
executeMode(分散式處理能力)
用於控制是否開啟分布式模式來執行當前任務。
distribute:開啟分散式處理能力。分布式執行模式可以將您的任務切片分散到多台執行節點上並發執行,進而做到同步速度隨執行叢集規模做水平擴充,突破單機執行瓶頸。
null:不開啟分散式處理能力。配置的並發資料僅僅是單機上的進程並發,無法利用多機聯合計算。
重要如果使用獨享Data Integration資源群組,且只有1台機器,不建議使用分布式,因為無法利用多機資源能力。
如果單機已經滿足速度需要,建議優選單機模式,簡化任務執行模式。
並發數大於等於8個才能開啟分散式處理能力。
部分資料與支援分布式模式執行任務,詳情請參見具體外掛程式配置文檔。
開啟分散式處理開關會佔用更多資源,如運行時報錯記憶體溢出(OOM),可嘗試關閉此開關。
concurrent(任務期望最大並發數)
用於定義當前任務從源端並行讀取或並行寫入目標端的最大線程數。
說明由於資源規格等原因,實際執行時並發數可能小於等於此處配置的並發數,調試資源群組收費將按照實際執行的並發數收費。詳情請參見:效能指標。
throttle(同步速率)
用於控制同步速率。
true:限流。以保護讀取端資料庫,避免抽取速度過大,給源庫造成太大的壓力。限速最小配置為1MB/S。
說明throttle設定為true時,您還需要設定mbps(同步速率)參數。
false:不限流。在不限流的情況下,任務將在所配置的並發數的限制基礎上,提供現有硬體環境下最大的傳輸效能。
說明流量度量值是Data Integration本身的度量值,不代表實際網卡流量。通常,網卡流量是通道流量膨脹的1至2倍,實際流量膨脹取決於具體的資料存放區系統傳輸序列化情況。
errorLimit(錯誤記錄數控制)
用於定義髒資料閾值,及對任務的影響。
重要當髒資料過多時,會影響同步任務的整體同步速度。
不配置時預設允許髒資料,即任務產生髒資料時不影響任務執行。
配置為0,表示不允許髒資料存在。如果同步過程中產生髒資料,任務將失敗退出。
允許髒資料並設定其閾值時:
若產生的髒資料在閾值範圍內,同步任務將忽略髒資料(即不會寫入目標端),並正常執行。
若產生的髒資料超出閾值範圍,同步任務將失敗退出。
說明髒資料認定標準:髒資料是對業務沒有意義,格式非法或者同步過程中出現問題的資料。單條資料寫入目標資料來源過程中發生了異常,則此條資料為髒資料。 因此只要是寫入失敗的資料均被歸類於髒資料。
例如,源端是VARCHAR類型的資料寫到INT類型的目標列中,則會因為轉換不合理導致髒資料不會成功寫入目的端。您可以在同步任務配置時,控制同步過程中是否允許髒資料產生,並且支援控制髒資料條數,即當髒資料超過指定條數時,任務失敗退出。
說明任務整體同步速度除受到上述配置影響外,還受源端資料來源效能,同步網路環境等多方面影響,關於同步速率說明與調優,詳情請參見離線同步任務調優。
步驟五:配置調度屬性
周期性調度的離線同步任務需要配置任務自動調度時的相關屬性,此步驟為您介紹如何配置調度相關屬性。您可以進入離線同步節點的編輯頁面,單擊右側的調度配置,下文將為您介紹如何在同步任務中配置節點調度屬性。調度參數使用說明請參見Data Integration使用調度參數的相關說明。
配置節點調度屬性:用於為任務設定階段使用的變數賦值調度參數,您在上述配置中定義的變數均可以在此處進行賦值,支援賦值常量與變數。
配置時間屬性:用於定義任務在生產環境的周期調度方式。您可以在調度配置的時間屬性地區,配置任務組建循環執行個體的方式、調度類型、調度周期等屬性。
配置資源屬性:用於定義調度情境下,將當前任務下發至Data Integration任務執行資源時所使用的調度資源群組,您可以在調度配置的資源屬性地區,選擇任務調度運行時需要使用的資源群組。
說明Data Integration離線任務通過調度資源群組下發至對應的Data Integration任務執行資源組上運行,會產生調度相關費用,關於任務下發機制說明,請參見任務下發機制。
步驟六:提交並發布任務
若任務需要進行周期性調度運行,您需要將任務發布至生產環境。關於任務發布,詳情請參見:發布任務。
後續步驟
任務發布至生產環境後,您可進入生產環境營運中心查看該調度任務,關於離線同步任務的運行與管理、狀態監控、資源群組營運等操作詳情請參見:離線同步任務營運。