HybridDB for MySQL資料來源為您提供讀取和寫入HybridDB for MySQL的雙向功能,本文為您介紹DataWorks的HybridDB for MySQL資料同步能力支援情況。
使用限制
離線同步支援閱讀檢視表。
HybridDB for MySQL Reader外掛程式支援讀取表和視圖。表欄位可以依序指定全部列、部分列、調整列順序、指定常量欄位和配置HybridDB for MySQL的函數,如now()等。
支援的欄位類型
HybridDB for MySQL Reader和HybridDB for MySQL Writer針對HybridDB for MySQL類型的轉換列表,如下所示。
類型分類 | HybridDB for MySQL資料類型 |
整數類 | INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT和YEAR |
浮點類 | FLOAT、DOUBLE和DECIMAL |
字串類 | VARCHAR、CHAR、TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT |
日期時間類 | DATE、DATETIME、TIMESTAMP和TIME |
布爾類 | BOOL |
二進位類 | TINYBLOB、MEDIUMBLOB、BLOB、LONGBLOB和VARBINARY |
除上述羅欄欄位類型外,其他類型均不支援。
HybridDB for MySQL Reader外掛程式將tinyint(1)視作整型。
資料同步任務開發
HybridDB for MySQL資料同步任務的配置入口和通用配置流程指導可參見下文的配置指導,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。
建立資料來源
在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見建立並管理資料來源。
單表離線同步任務配置指導
操作流程請參見通過嚮導模式配置離線同步任務、通過指令碼模式配置離線同步任務。
指令碼模式配置的全量參數和指令碼Demo請參見下文的附錄:指令碼Demo與參數說明。
整庫離線讀同步配置指導
操作流程請參見Data Integration側同步任務配置。
附錄:指令碼Demo與參數說明
附錄:離線任務指令碼配置方式
如果您配置離線任務時使用指令碼模式的方式進行配置,您需要在任務指令碼中按照指令碼的統一格式要求編寫指令碼中的reader參數和writer參數,指令碼模式的統一要求請參見通過指令碼模式配置離線同步任務,以下為您介紹指令碼模式下的資料來源的Reader參數和Writer參數的指導詳情。
Reader指令碼Demo
單庫單表的指令碼範例如下:
{
"type": "job",
"steps": [
{
"parameter": {
"datasource": "px_aliyun_hymysql",//資料來源名。
"column": [//源端列名。
"id",
"name",
"sex",
"salary",
"age",
"pt"
],
"where": "id=10001",//過濾條件。
"splitPk": "id",//切分鍵。
"table": "person"//源端表名。
},
"name": "Reader",
"category": "reader"
},
{
"parameter": {}
],
"version": "2.0",//版本號碼。
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {//錯誤記錄數。
"record": ""
},
"speed": {
"concurrent": 7,//並發數。
"throttle": true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
"mbps": 1 //限流值。,此處1mbps = 1MB/s。
}
}
}
Reader指令碼參數
參數 | 描述 | 是否必選 | 預設值 |
datasource | 資料來源名稱,指令碼模式支援添加資料來源,此配置項填寫的內容必須要與添加的資料來源名稱保持一致。 | 是 | 無 |
table | 選取的需要同步的表名稱,一個Data Integration任務只能同步資料到一個目的表。 | 是 | 無 |
column | 所配置的表中需要同步的列名集合,使用JSON的數組描述欄位資訊 。預設使用所有列配置,例如[*]。
| 是 | 無 |
splitPk | HybridDB for MySQL Reader進行資料幫浦時,如果指定splitPk,表示您希望使用splitPk代表的欄位進行資料分區,資料同步因此會啟動並發任務進行資料同步,從而提高資料同步的效能。
| 否 | 無 |
where | 篩選條件,在實際業務情境中,往往會選擇當天的資料進行同步,將where條件指定為
| 否 | 無 |
querySql(進階模式,嚮導模式不提供) | 在部分業務情境中,where配置項不足以描述所篩選的條件,您可以通過該配置型來自訂篩選SQL 。當配置此項後,資料同步系統就會忽略column、table和where配置項,直接使用該項配置的內容對資料進行篩選。例如需要進行多表join後同步資料,使用 | 否 | 無 |
singleOrMulti(只適合分庫分表) | 表示分庫分表,嚮導模式轉換成指令碼模式主動產生此配置 | 是 | multi |
Writer指令碼Demo
{
"type": "job",
"steps": [
{
"parameter": {},
{
"parameter": {
"postSql": [],//匯入後的完整語句。
"datasource": "px_aliyun_hy***",//資料來源名。
"column": [//目標端列名。
"id",
"name",
"sex",
"salary",
"age",
"pt"
],
"writeMode": "insert",//寫入模式。
"batchSize": 256,//一次性批量提交的記錄數大小。
"encoding": "UTF-8",//編碼格式。
"table": "person_copy",//目標表名。
"preSql": []//匯入前的準備語句。
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",//版本號碼。
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {//錯誤記錄數。
"record": ""
},
"speed": {
"concurrent": 7,//並發數。
"throttle": true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
"mbps": 1,//限流值,此處1mbps = 1MB/s。
}
}
}
Writer指令碼參數
參數 | 描述 | 是否必選 | 預設值 |
datasource | 資料來源名稱,指令碼模式支援添加資料來源,此配置項填寫的內容必須與添加的資料來源名稱保持一致。 | 是 | 無 |
table | 選取的需要同步的表名稱。 | 是 | 無 |
writeMode | 選擇匯入模式,目前支援insert和replace兩種方式。
| 否 | insert |
column | 目標表需要寫入資料的欄位,欄位之間用英文逗號分隔。例如 | 是 | 無 |
preSql | 執行資料同步任務之前率先執行的SQL語句。目前嚮導模式僅允許執行一條SQL語句,指令碼模式可以支援多條SQL語句,例如清除舊資料。 | 否 | 無 |
postSql | 執行資料同步任務之後執行的SQL語句,目前嚮導模式僅允許執行一條SQL語句,指令碼模式可以支援多條SQL語句,例如加上某一個時間戳記。 | 否 | 無 |
batchSize | 一次性批量提交的記錄數大小,該值可以極大減少資料同步系統與HybridDB for MySQL的網路互動次數,並提升整體輸送量。如果該值設定過大,會導致資料同步運行進程OOM異常。 | 否 | 1,024 |