DataWorks支援通過嚮導模式或指令碼模式配置離線同步任務,您可以將分庫分表資料同步至目標單表。本文以同步MySQL分庫分表資料為例進行說明。
前提條件
已準備好要同步的多個資料來源,詳情請參見支援的資料來源與讀寫外掛程式。
背景資訊
您可以使用如下幾種方式實現分庫分表離線同步任務,不同方式間差異對比如下:
差異項 | 分庫分表資料來源+嚮導模式(推薦) | ||
是否支援嚮導模式 | 是 | 是 | 否 |
是否支援按規則配置表名 | 支援Regex配置源表名,運行時根據正則搜尋匹配表同步。 | 不支援。 | 支援數字範圍配置表名,例如: |
是否要求表結構一致 | 可以配置“欄位缺失策略”,允許部分表缺失欄位,作為NULL值往下輸出。 | 要求表結構一致。 | |
欄位對應參考 | 分庫分表資料來源中的Meta資料來源第一張匹配表。 | 第一個資料來源的第一張表。 | 指令碼模式手寫。 |
支援的資料來源數量 | 分庫分表資料來源支援引用最大5000個資料來源。 | 建議單節點配置資料來源在50個以內。 | |
增加資料來源是否需要修改、發布節點 | 無需修改節點,修改資料來源後,新啟動並執行執行個體生效。 | 需要修改任務,增加資料來源,配置該資料來源的表名。 | |
支援的資料來源類型 | MySQL、PolarDB | MySQL、PolarDB、AnalyticDB | MySQL、PolarDB、AnalyticDB、SQLServer、Oracle、PostgreSQL、DM、DB2、Oracle |
分庫分表資料來源+嚮導模式
進入Data Integration頁面。
登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的 ,在下拉框中選擇對應工作空間後單擊進入Data Integration。
在左側導覽列單擊資料來源,然後單擊新增資料來源,選擇資料來源類型,當前此方式支援MySQL和PolarDB。
將每個分庫建立為普通資料來源。本文以MySQL為例,詳細步驟請參見建立Data Integration資料來源。
建立分庫分表資料來源,將多個普通資料來源合并為一個資料來源,作為資料同步的資料來源。
單擊新增資料來源,選擇分庫分表。
按需選擇分庫分表資料來源類型,配置相關參數。本文以MySQL(分庫分表)為例。
關鍵參數說明:
自訂資料來源名稱。
選擇資料來源:選擇已建立的各分庫普通資料來源。
Meta資料來源:分庫分表同步,所有資料來源內的庫表結構必須保持一致,請選擇其中一個資料來源作為預設中繼資料的模板,供配置同步任務時拉取預設庫表結構使用。
重要資料來源內的庫表結構不一致時,後續同步任務將會執行報錯。
配置分庫分表同步任務。
嚮導模式配置分庫分表:資料來源選擇MySQL(分庫分表),然後選擇已建立的分庫分表資料來源。完整的任務配置步驟請參見通過嚮導模式配置離線同步任務。
說明本文以MySQL(分庫分表)為例,實際配置時請按需選擇。
單擊下一步。
選擇需要同步的表,儲存並發布,完成後續步驟。
普通資料來源+嚮導模式
將每個分庫建立為普通資料來源。本文以MySQL為例,詳細步驟請參見建立Data Integration資料來源。
配置分庫分表同步任務。
嚮導模式配置分庫分表:在資料來源地區單擊+編輯資料來源,添加多個資料來源。完整的任務配置步驟請參見通過嚮導模式配置離線同步任務。
將多個普通資料來源加入到已選中資料來源中,單擊確定。
單擊下一步。
選擇每個資料來源中需要同步的表,儲存並發布,完成後續步驟。
指令碼模式
配置分庫分表同步任務。
指令碼模式配置分庫分表:指令碼樣本如下,完整的任務配置步驟請參見通過指令碼模式配置離線同步任務。
重要實際運行時,請刪除下述代碼中的注釋。
{ "type":"job", "version":"2.0", "steps":[ { "stepType":"mysql", "parameter":{ "envType":0, "column":[ "id", "name" ], "socketTimeout":3600000, "tableComment":"", "connection":[ //根據分庫數配置connection { "datasource":"datasourceName1", //分庫分表的資料來源1 "table":[ //分庫分表的Table列表1 "tb1" ] }, { "datasource":"datasourceName2", //分庫分表的資料來源2 "table":[ //分庫分表的Table列表2 "tb2", "tb3" ] } ], "useSpecialSecret":true,//各個資料來源使用各自的密碼 "where":"", "splitPk":"id", "encoding":"UTF-8" }, "name":"Reader", "category":"reader" }, { "stepType":"odps", "parameter":{ "partition":"pt=${bizdate}", "truncate":true, "datasource":"odpsname", "envType":0, "isSupportThreeModel":false, "column":[ "id", "name" ], "emptyAsNull":false, "tableComment":"", "table":"t1", "consistencyCommit":false }, "name":"Writer", "category":"writer" } ], "setting":{ "executeMode":null, "errorLimit":{ "record":"" }, "speed":{ "concurrent":2, "throttle":false } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }