PolarDB-X 2.0数据源为您提供读取和写入PolarDB-X 2.0的双向通道,本文为您介绍DataWorks的PolarDB-X 2.0数据同步的能力支持情况。
使用限制
PolarDB-X 2.0数据源仅支持使用独享数据集成资源组。
支持的版本
离线读写:支持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 |