TiDB資料來源為您提供了離線讀的能力,本文為您介紹DataWorks的TiDB資料同步的能力支援情況。
支援的TiDB版本
-
離線讀取:支援TiDB 7.x、8.x資料庫版本。
-
離線寫入:暫不支援。
-
即時讀寫:暫不支援。
TiDB 高度相容MySQL協議,以及 MySQL 5.7和 MySQL 8.0常用的功能及文法。DataWorks離線讀TiDB是基於MySQL協議進行資料同步。TiDB與MySQL相容性,相關參考文檔:TiDB與MySQL相容性對比。
支援的欄位類型
TiDB的全量欄位類型請參見TiDB資料類型概述,以下為您羅列主要欄位支援情況。
|
欄位類型 |
離線讀(TiDB Reader) |
|
TINYINT |
支援 |
|
SMALLINT |
支援 |
|
MEDIUMINT |
支援 |
|
INTEGER |
支援 |
|
BIGINT |
支援 |
|
FLOAT |
支援 |
|
DOUBLE |
支援 |
|
DECIMAL |
支援 |
|
CHAR |
支援 |
|
VARCHAR |
支援 |
|
JSON |
支援 |
|
TEXT |
支援 |
|
TINYTEXT |
支援 |
|
MEDIUMTEXT |
支援 |
|
LONGTEXT |
支援 |
|
VARBINARY |
支援 |
|
BINARY |
支援 |
|
BLOB |
支援 |
|
TINYBLOB |
支援 |
|
MEDIUMBLOB |
支援 |
|
LONGBLOB |
支援 |
|
ENUM |
支援 |
|
SET |
支援 |
|
BOOLEAN |
支援 |
|
BIT |
支援 |
|
DATE |
支援 |
|
DATETIME |
支援 |
|
TIMESTAMP |
支援 |
|
TIME |
支援 |
|
YEAR |
支援 |
資料同步前準備:TiDB環境準備
在DataWorks上進行資料同步前,您需要參考本文提前在TiDB側進行資料同步環境準備,以便在DataWorks上進行TiDB資料同步任務配置與執行時服務正常。以下為您介紹TiDB同步前的相關環境準備。
確認TiDB版本
Data Integration對TiDB版本有7.x或8.x的版本要求,需要您確認待同步的TiDB是否符合版本要求。您可以在TiDB資料庫通過如下語句查看當前TiDB資料庫版本。
SELECT TIDB_VERSION()\G
*************************** 1. row ***************************
TIDB_VERSION(): Release Version: v8.1.1
Edition: Community
Git Commit Hash: 821e491a20fbab36604b36b647b5bae26a2c1418
Git Branch: HEAD
UTC Build Time: 2024-08-27 19:16:25
GoVersion: go1.21.10
Race Enabled: false
Check Table Before Drop: false
Store: tikv
1 row in set (0.00 sec)
配置帳號許可權
可提前規劃並建立一個專用於DataWorks訪問資料來源的TiDB帳號,操作如下:
-
(可選)建立帳號,操作詳情請參見:TiDB 使用者賬戶管理。
-
配置許可權。
在離線讀TiDB資料時,此帳號需擁有同步表的讀(
SELECT)許可權。可以參考以下命令為帳號添加許可權,或直接給帳號賦予
SUPER許可權。如下執行語句在實際使用時,請替換'同步帳號'為上述建立的帳號。-- CREATE USER '同步帳號'@'%' IDENTIFIED BY '密碼'; //建立同步帳號並設定密碼,使其可以通過任意主機登入資料庫。%表示任意主機。 GRANT SELECT ON *.* TO '同步帳號'@'%'; //授權同步帳號資料庫的 SELECT許可權。*.*表示授權同步帳號對所有資料庫的所有表擁有上述許可權。您也可以指定授權同步帳號對目標資料庫的指定表擁有上述許可權。例如,授權同步帳號對test資料庫的user表擁有上述許可權,則可以使用GRANT SELECT ON test.user TO '同步帳號'@'%';語句。說明REPLICATION SLAVE語句為全域許可權,不能指定授權同步帳號對目標資料庫的指定表擁有相關許可權。
建立資料來源
在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見資料來源管理,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。
附錄:TiDB指令碼Demo與參數說明
離線任務指令碼配置方式
如果您配置離線任務時使用指令碼模式的方式進行配置,您需要按照統一的指令碼格式要求,在任務指令碼中編寫相應的參數,詳情請參見指令碼模式配置,以下為您介紹指令碼模式下資料來源的參數配置詳情。
Reader指令碼Demo
以下為讀取的指令碼配置樣本:
本文JSON樣本中的注釋僅用於展示部分重要參數含義,實際配置時,請移除注釋內容。
{
"type": "job",
"version": "2.0",
"steps":
[
{
"stepType": "tidb",
"parameter":
{
"column":
[
"id",
"name"
],
"where": "",
"splitPk": "id",
"connection":
[
{
"selectedDatabase": "test_database",
"datasource": "test_datasource",
"table":
[
"test_table"
]
}
]
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "odps",
"parameter":
{
},
"name": "Writer",
"category": "writer"
}
],
"setting":
{
"errorLimit":
{
"record": "0"
},
"speed":
{
"throttle": false,
"concurrent": 3
}
},
"order":
{
"hops":
[
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Reader指令碼參數
|
指令碼參數名 |
描述 |
是否必選 |
預設值 |
|
datasource |
資料來源名稱,指令碼模式支援添加資料來源,此配置項填寫的內容必須與添加的資料來源名稱保持一致。 |
是 |
無 |
|
table |
選取的需要同步的表名稱。 table用於配置範圍的進階用法樣本如下:
|
是 |
無 |
|
column |
所配置的表中需要同步的列名集合,使用JSON的數組描述欄位資訊 。預設使用所有列配置,例如
|
是 |
無 |
|
splitPk |
TiDB Reader進行資料幫浦時,如果指定splitPk,表示您希望使用splitPk代表的欄位進行資料分區,資料同步因此會啟動並發任務進行資料同步,提高資料同步的效率。
|
否 |
無 |
|
where |
篩選條件,在實際業務情境中,往往會選擇當天的資料進行同步,將where條件指定為
|
否 |
無 |