全部產品
Search
文件中心

DataWorks:PolarDB-X 2.0資料來源

更新時間:Oct 25, 2024

PolarDB-X 2.0資料來源為您提供讀取和寫入PolarDB-X 2.0的雙向通道,本文為您介紹DataWorks的PolarDB-X 2.0資料同步的能力支援情況。

使用限制

PolarDB-X 2.0資料來源支援使用Serverless資源群組(推薦)獨享Data Integration資源群組

支援的版本

離線讀寫:支援PolarDB-X 2.0,且離線同步支援閱讀檢視。

支援的欄位類型

PolarDB-X 2.0的全量欄位類型請參見資料類型。下面為您羅列當前主要欄位的支援情況。

欄位類型

離線讀(PolarDB-X 2.0 Reader)

離線寫(PolarDB-X 2.0 Writer)

TINYINT

支援

支援

SMALLINT

支援

支援

INTEGER

支援

支援

BIGINT

支援

支援

FLOAT

支援

支援

DOUBLE

支援

支援

DECIMAL/NUMBERIC

支援

支援

REAL

不支援

不支援

VARCHAR

支援

支援

JSON

支援

支援

TEXT

支援

支援

MEDIUMTEXT

支援

支援

LONGTEXT

支援

支援

VARBINARY

支援

支援

BINARY

支援

支援

TINYBLOB

支援

支援

MEDIUMBLOB

支援

支援

LONGBLOB

支援

支援

ENUM

支援

支援

SET

支援

支援

BOOLEAN

支援

支援

BIT

支援

支援

DATE

支援

支援

DATETIME

支援

支援

TIMESTAMP

支援

支援

TIME

支援

支援

YEAR

支援

支援

LINESTRING

不支援

不支援

POLYGON

不支援

不支援

MULTIPOINT

不支援

不支援

MULTILINESTRING

不支援

不支援

MULTIPOLYGON

不支援

不支援

GEOMETRYCOLLECTION

不支援

不支援

資料同步前準備

在DataWorks上進行資料同步前,您需要參考本文提前在PolarDB-X 2.0側進行資料同步環境準備,以便在DataWorks上進行PolarDB-X 2.0資料同步任務配置與執行時服務正常。以下為您介紹PolarDB-X 2.0同步前的相關環境準備。

準備工作1:確認PolarDB-X版本

PolarDB-X 1.0請使用DRDS資料來源,PolarDB-X 2.0使用本資料來源。

準備工作2:配置帳號許可權

建議您提前規劃並建立一個專用於DataWorks訪問資料來源的PolarDB-X 2.0帳號,操作如下。

  1. (可選)進入PolarDB-X 2.0管控台建立帳號。若您已有帳號,可忽略該步驟。

  2. 配置許可權。

    • 離線同步情境下:

      • 離線讀PolarDB-X 2.0資料時,此帳號需擁有同步表的讀(SELECT)許可權。

      • 離線寫PolarDB-X 2.0資料時,此帳號需擁有同步表的寫(INSERT、DELETE、UPDATE)許可權。

    • 即時同步情境下(整庫即時):

      • 高許可權帳號:預設可以讀取Binlog,用於即時同步。

      • 普通帳號:請使用高許可權帳號賦予普通帳號指定資料庫的SELECT、REPLICATION SLAVE、REPLICATION CLIENT許可權。

-- 建立同步帳號並設定密碼,使其可以通過任意主機登入資料庫。%表示任意主機。
-- CREATE USER '同步帳號'@'%' IDENTIFIED BY '密碼'。
-- 授權同步帳號資料庫的 SELECT, REPLICATION SLAVE, REPLICATION CLIENT許可權。
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '同步帳號'@'%'; 

建立資料來源

在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見建立並管理資料來源詳細的配置參數解釋可在配置介面查看對應參數的文案提示

資料同步任務開發:PolarDB-X 2.0同步流程引導

資料同步任務的配置入口和通用配置流程可參見下文的配置指導。

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

附錄:指令碼Demo與參數說明

離線任務指令碼配置方式

如果您配置離線任務時使用指令碼模式的方式進行配置,您需要按照統一的指令碼格式要求,在任務指令碼中編寫相應的參數,詳情請參見通過指令碼模式配置離線同步任務,以下為您介紹指令碼模式下資料來源的參數配置詳情。

Reader指令碼Demo

{
    "type":"job",
    "version":"2.0",//版本號碼。
    "steps":[
        {
            "stepType":"polardbx20",//外掛程式名。
            "parameter":{
               "connection": [
                  {
                      "datasource":"",
                      "table": [
                          "t1"
                      ]
                  }
              ],
              "column": [
                  "c1",
                  "c2",
                  "'const'"
              ],
              "where": "",
              "splitPk": "",
              "checkSlave": "true",
              "slaveDelayLimit": "300"
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"//錯誤記錄數。
        },
        "speed":{
            "throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
            "concurrent":1,//作業並發數。
            "mbps":"12"//限流
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Reader指令碼參數

指令碼參數名

描述

是否必選

預設值

datasource

資料來源名稱。該名稱必須與資料來源管理介面建立的PolarDB-X 2.0資料來源名稱保持一致。

table

需要同步的表名稱,僅支援單表。

column

所配置的表中需要同步的列名集合,使用JSON的數組描述欄位資訊。預設使用所有列配置,例如[*]。

  • 支援列裁剪:可以挑選部分列進行同步。

  • 支援列換序:列可以不按照表Schema資訊順序進行同步。

  • 支援常量配置:需遵循PolarDB-X 2.0 SQL文法格式,例如["id","table","1","'mingya.wmy'","'null'","to_char(a+1)","2.3","true"]

    • id為普通列名。

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

    • 1為整型數字常量。

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

    • 關於null

      • " "表示空。

      • null表示null。

      • 'null'表示null這個字串。

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

    • 2.3為浮點數。

    • true為布爾值。

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

splitPk

使用PolarDB-X 2.0 Reader抽取資料,可通過splitPk欄位進行資料分區,實現並發同步資料,提高同步效能。

  • (推薦)splitPk設定為表主鍵。通過表主鍵切分出的分區比較均勻,不容易出現資料熱點。

  • splitPk僅支援整型資料切分,不支援字串、浮點和日期等其他類型。若使用了不支援的類型,平台將忽略splitPk功能,使用單通道同步資料。

  • 若不配置splitPk參數(即Reader指令碼中不包含該參數)或splitPk參數取值為空白,平台將使用單通道同步資料 。

where

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

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

  • 不可以將where條件指定為LIMIT 10,這不符合PolarDB-X 2.0 SQL WHERE子句約束。

checkSlave

資料庫主備時延檢查,當資料來源使用PolarDB-X 2.0隻讀執行個體時,在任務開始前,會檢查唯讀執行個體和主執行個體的延遲時間。用於避免主備延遲造成的資料丟失問題。

true

slaveDelayLimit

單位為秒,檢查唯讀執行個體和主執行個體的延遲時間,當延遲時間超過本配置時,任務運行失敗。用於避免主備延遲造成的資料丟失問題。

30

Writer指令碼Demo

{
    "type":"job",
    "version":"2.0",//版本號碼。
    "steps":[ 
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"PolarDB-X 2.0",//外掛程式名。
            "parameter":{
                "postSql":[],//匯入後的準備語句。
                "datasource":"",//資料來源。
                "column":[//列名。
                    "id",
                    "value"
                ],
                "writeMode":"insert",//寫入模式,您可以設定為insert、replace。
                "batchSize":1024,//一次性批量提交的記錄數大小。
                "table":"",//表名。
                "preSql":[ 
                     "delete from XXX;" //匯入前的準備語句。
                   ]
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{//錯誤記錄數。
            "record":"0"
        },
        "speed":{
            "throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
            "concurrent":1, //作業並發數。
            "mbps":"12"//限流,控制同步的最高速率,防止對上遊/下遊資料庫讀取/寫入壓力過大。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Writer指令碼參數

指令碼參數名

描述

是否必選

預設值

datasource

資料來源名稱。該名稱必須與資料來源管理介面建立的PolarDB-X 2.0資料來源名稱保持一致。

table

選取的需要同步的表名稱。

writeMode

選擇匯入模式,支援insert intoreplace into兩種方式:

  • insert into:當主鍵/唯一性索引衝突時會寫不進去衝突的行,以髒資料的形式體現。如果您通過指令碼模式配置任務,請設定writeMode為insert。

  • replace into:沒有遇到主鍵/唯一性索引衝突時,與insert into行為一致。衝突時會先刪除原有行,再插入新行。即新行會替換原有行的所有欄位。如果您通過指令碼模式配置任務,請設定writeMode為replace。

insert

column

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

preSql

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

-- tablename為表名
truncate table tablename;
說明

當有多條SQL語句時,不支援事務。

postSql

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

-- tablename為表名,colname為列名
alter table tablename 
add colname timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
說明

當有多條SQL語句時,不支援事務。

batchSize

一次性批量提交的記錄數大小,該值可以極大減少資料同步系統與PolarDB-X 2.0的網路互動次數,並提升整體輸送量。但是如果該值設定過大,會導致記憶體溢出。

256