PolarDB-X 2.0資料來源為您提供讀取和寫入PolarDB-X 2.0的雙向通道,本文為您介紹DataWorks的PolarDB-X 2.0資料同步的能力支援情況。
使用限制
PolarDB-X 2.0資料來源僅支援使用獨享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 | 不支援 | 不支援 |
資料同步前準備:PolarDB-X 2.0環境準備
在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帳號,操作如下。
(可選)進入PolarDB-X 2.0管控台建立帳號。若您已有帳號,可忽略該步驟。
配置許可權。
離線同步情境下:
離線讀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 '同步帳號'@'%';
資料同步任務開發:PolarDB-X 2.0同步流程引導
PolarDB-X 2.0資料同步任務的配置入口和通用配置流程指導可參見下文的配置指導,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。
建立資料來源
在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見建立並管理資料來源。
單表離線同步任務配置指導
操作流程請參見通過指令碼模式配置離線同步任務。
指令碼模式配置的全量參數和指令碼Demo請參見下文的附錄:PolarDB-X 2.0指令碼Demo與參數說明。
附錄:PolarDB-X 2.0指令碼Demo與參數說明
離線任務指令碼配置方式
如果您配置離線任務時使用指令碼模式的方式進行配置,您需要在任務指令碼中按照指令碼的統一格式要求編寫指令碼中的Reader參數和Writer參數,指令碼模式的統一要求請參見通過指令碼模式配置離線同步任務,以下為您介紹指令碼模式下的資料來源的Reader參數和Writer參數的指導詳情。
PolarDB-X 2.0 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"
}
]
}
}
PolarDB-X 2.0 Reader指令碼參數
指令碼參數名 | 描述 | 是否必選 | 預設值 |
datasource | 資料來源名稱。該名稱必須與資料來源管理介面建立的PolarDB-X 2.0資料來源名稱保持一致。 | 是 | 無 |
table | 需要同步的表名稱,僅支援單表。 | 是 | 無 |
column | 所配置的表中需要同步的列名集合,使用JSON的數組描述欄位資訊。預設使用所有列配置,例如[*]。
| 是 | 無 |
splitPk | 使用PolarDB-X 2.0 Reader抽取資料,可通過splitPk欄位進行資料分區,實現並發同步資料,提高同步效能。
| 否 | 無 |
where | 篩選條件,在實際業務情境中,往往會選擇當天的資料進行同步,將where條件指定為
| 否 | 無 |
checkSlave | 資料庫主備時延檢查,當資料來源使用PolarDB-X 2.0隻讀執行個體時,在任務開始前,會檢查唯讀執行個體和主執行個體的延遲時間。用於避免主備延遲造成的資料丟失問題。 | 否 | true |
slaveDelayLimit | 單位為秒,檢查唯讀執行個體和主執行個體的延遲時間,當延遲時間超過本配置時,任務運行失敗。用於避免主備延遲造成的資料丟失問題。 | 否 | 30 |
PolarDB-X 2.0 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"
}
]
}
}
PolarDB-X 2.0 Writer指令碼參數
指令碼參數名 | 描述 | 是否必選 | 預設值 |
datasource | 資料來源名稱。該名稱必須與資料來源管理介面建立的PolarDB-X 2.0資料來源名稱保持一致。 | 是 | 無 |
table | 選取的需要同步的表名稱。 | 是 | 無 |
writeMode | 選擇匯入模式,支援insert into和replace into兩種方式:
| 否 | insert |
column | 目標表需要寫入資料的欄位,欄位之間用英文逗號分隔,例如"column": ["id", "name", "age"]。如果要依次寫入全部列,使用星號(*)表示,例如"column": ["*"]。 | 是 | 無 |
preSql | 執行資料同步任務之前率先執行的SQL語句。目前嚮導模式僅允許執行一條SQL語句,指令碼模式可以支援多條SQL語句。例如,執行前清空表中的舊資料:
說明 當有多條SQL語句時,不支援事務。 | 否 | 無 |
postSql | 執行資料同步任務之後執行的SQL語句,目前嚮導模式僅允許執行一條SQL語句,指令碼模式可以支援多條SQL語句。例如,加上某一個時間戳記:
說明 當有多條SQL語句時,不支援事務。 | 否 | 無 |
batchSize | 一次性批量提交的記錄數大小,該值可以極大減少資料同步系統與PolarDB-X 2.0的網路互動次數,並提升整體輸送量。但是如果該值設定過大,會導致記憶體溢出。 | 否 | 256 |