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同步前的相關環境準備。
準備工作1:確認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)
準備工作2:配置帳號許可權
可提前規劃並建立一個專用於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條件指定為
| 否 | 無 |