全部產品
Search
文件中心

DataWorks:HybridDB for MySQL資料來源

更新時間:Jun 19, 2024

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上建立一個對應的資料來源,操作流程請參見建立並管理資料來源

單表離線同步任務配置指導

整庫離線讀同步配置指導

操作流程請參見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的數組描述欄位資訊 。預設使用所有列配置,例如[*]。

  • 支援列裁剪,即列可以挑選部分列進行匯出。

  • 支援列換序,即列可以不按照表Schema資訊順序進行匯出。

  • 支援常量配置,您需要按照SQL文法格式,例如["id", "table","1","'mingya.wmy'","'null'", "to_char(a+1)","2.3","true"]

    • id為普通列名。

    • table為包含保留字的列名。

    • 1為整型數字常量。

    • ‘mingya.wmy’為字串常量(注意需要加上一對單引號)。

    • 'null'為字串常量。

    • to_char(a+1)為計算字串長度函數。

    • 2.3為浮點數。

    • true為布爾值。

  • column必須顯示指定同步的列集合,不允許為空白。

splitPk

HybridDB for MySQL Reader進行資料幫浦時,如果指定splitPk,表示您希望使用splitPk代表的欄位進行資料分區,資料同步因此會啟動並發任務進行資料同步,從而提高資料同步的效能。

  • 推薦splitPk使用者使用表主鍵,因為表主鍵通常情況下比較均勻,因此切分出來的分區也不容易出現資料熱點。

  • 目前splitPk僅支援整型資料切分,不支援字串、浮點、日期等其他類型 。如果您指定其他非支援類型,忽略splitPk功能,使用單通道進行同步。

  • 如果splitPk不填寫,包括不提供splitPk或者splitPk值為空白,資料同步視作使用單通道同步該表資料 。

where

篩選條件,在實際業務情境中,往往會選擇當天的資料進行同步,將where條件指定為gmt_create>$bizdate

  • where條件可以有效地進行業務增量同步處理。如果不填寫where語句,包括不提供where的key或value,資料同步均視作同步全量資料。

  • 不可以將where條件指定為limit 10,不符合SQL WHERE子句約束。

querySql(進階模式,嚮導模式不提供)

在部分業務情境中,where配置項不足以描述所篩選的條件,您可以通過該配置型來自訂篩選SQL 。當配置此項後,資料同步系統就會忽略columntablewhere配置項,直接使用該項配置的內容對資料進行篩選。例如需要進行多表join後同步資料,使用[“id”,“table”,“1”,“‘mingya.wmy’”,“‘null’”,“to_char(a+1)”,“2.3”,“true”]。當您配置querySql時,HybridDB for MySQL Reader直接忽略columntablewhere和splitPk條件的配置,querySql優先順序大於table、column、where、splitPk選項。datasource會使用它解析出使用者名稱和密碼等資訊。

singleOrMulti(只適合分庫分表)

表示分庫分表,嚮導模式轉換成指令碼模式主動產生此配置“singleOrMulti”:“multi”,但配置指令碼工作範本不會直接產生此配置,您需要手動添加,否則只會識別第一個資料來源。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兩種方式。

  • replace :沒有遇到主鍵或唯一性索引衝突時,與insert 行為一致,衝突時會用新行替換原有行所有欄位。

  • insert :當沒有遇到主鍵或唯一性索引衝突時,資料正常寫入。當主鍵或唯一性索引衝突時會寫不進去衝突的行,以髒資料的形式體現。

insert

column

目標表需要寫入資料的欄位,欄位之間用英文逗號分隔。例如"column":["id","name","age"]。如果要依次寫入全部列,使用*表示,例如"column":["*"]

preSql

執行資料同步任務之前率先執行的SQL語句。目前嚮導模式僅允許執行一條SQL語句,指令碼模式可以支援多條SQL語句,例如清除舊資料。

postSql

執行資料同步任務之後執行的SQL語句,目前嚮導模式僅允許執行一條SQL語句,指令碼模式可以支援多條SQL語句,例如加上某一個時間戳記。

batchSize

一次性批量提交的記錄數大小,該值可以極大減少資料同步系統與HybridDB for MySQL的網路互動次數,並提升整體輸送量。如果該值設定過大,會導致資料同步運行進程OOM異常。

1,024