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) | 离线写(TiDB Writer) |
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版本
数据集成对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
)权限。在离线写TiDB数据时,此账号需拥有同步表的写(
INSERT
、DELETE
、UPDATE
)权限。
可以参考以下命令为账号添加权限,或直接给账号赋予
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条件指定为
| 否 | 无 |