AnalyticDB for MySQL 3.0数据源

AnalyticDB for MySQL 3.0数据源为您提供读取和写入AnalyticDB for MySQL 3.0双向通道的功能,本文为您介绍DataWorks的AnalyticDB for MySQL 3.0数据同步的能力支持情况。

使用限制

  • ADB湖仓版数据源不支持在公共资源组配置以及运行同步任务。

  • 如果ADB数据源配置的实例从数仓版切换到了湖仓版,使用该数据源运行在公共资源组上的同步任务将会失败,建议切换前,确认是否有运行在公共资源组上的同步任务,并且将其切换到Serverless资源组(推荐)或独享数据集成资源组运行。

  • 离线同步支持读取视图(VIEW)表。

支持的字段类型

离线读

AnalyticDB for MySQL 3.0 Reader针对AnalyticDB for MySQL 3.0类型的转换列表,如下表所示。

类型分类

AnalyticDB for MySQL 3.0类型

整数类

INT、INTEGER、TINYINT、SMALLINT和BIGINT

浮点类

FLOAT、DOUBLE和DECIMAL

字符串类

VARCHAR

日期时间类

DATE、DATETIME、TIMESTAMP和TIME

布尔类

BOOLEAN

离线写

AnalyticDB for MySQL 3.0 Writer针对AnalyticDB for MySQL 3.0类型的转换列表,如下所示。

类型

AnalyticDB for MySQL 3.0数据类型

整数类

INT、INTEGER、TINYINT、SMALLINT和BIGINT

浮点类

FLOAT、DOUBLE和DECIMAL

字符串类

VARCHAR

日期时间类

DATE、DATETIME、TIMESTAMP和TIME

布尔类

BOOLEAN

创建数据源

在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见创建并管理数据源详细的配置参数解释可在配置界面查看对应参数的文案提示

数据同步任务开发

数据同步任务的配置入口和通用配置流程可参见下文的配置指导。

单表离线同步任务配置指导

单表及整库实时同步任务配置指导

操作流程请参见DataStudio侧实时同步任务配置

整库离线读、单表或整库全增量实时写等整库级别同步配置指导

操作流程请参见数据集成侧同步任务配置

附录:脚本Demo与参数说明

离线任务脚本配置方式

如果您配置离线任务时使用脚本模式的方式进行配置,您需要按照统一的脚本格式要求,在任务脚本中编写相应的参数,详情请参见通过脚本模式配置离线同步任务,以下为您介绍脚本模式下数据源的参数配置详情。

Reader脚本Demo

{
"type": "job",
"steps": [
{ 
"stepType": "analyticdb_for_mysql", //插件名。
"parameter": {
"column": [ //列名。
"id",
"value",
"table"
],
"connection": [
{
"datasource": "xxx", //数据源。
"table": [ //表名。
"xxx"
]
}
],
"where": "", //过滤条件。
"splitPk": "", //切分键。
"encoding": "UTF-8" //编码格式。
},
"name": "Reader",
"category": "reader"
},
{ 
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": "0" //同步过程中的错误记录限制数。
},
"speed": {
"throttle":true,//当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。
                        "concurrent":1 //作业并发数。
                      "mbps":"12"//限流,此处1mbps = 1MB/s。
}
}
}

Reader脚本参数

参数

描述

是否必选

默认值

datasource

数据源名称,脚本模式支持添加数据源,此配置项填写的内容必须要与添加的数据源名称保持一致。

table

所选取的需要同步的表。

column

所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息,默认使用所有列配置,例如[ * ]。

  • 支持列裁剪,即列可以挑选部分列进行导出。

  • 支持列换序,即列可以不按照表组织结构信息的顺序进行导出。

  • 支持常量配置,您需要按照MySQL的语法格式,例如[“id”, “`table`“, “1”, “‘bazhen.csy’”, “null”, “to_char(a + 1)”, “2.3” , “true”]

    • id为普通列名。

    • table包含保留的列名。

    • 1为整型数字常量。

    • bazhen.csy为字符串常量。

    • null为空指针。

    • to_char(a + 1)为计算字符串长度函数表达式。

    • 2.3为浮点数。

    • true为布尔值。

  • column必须显示您指定同步的列集合,不允许为空 。

splitPk

AnalyticDB for MySQL 3.0 Reader进行数据抽取时,如果指定splitPk,表示您希望使用splitPk代表的字段进行数据分片,数据同步因此会启动并发任务进行数据同步,提高数据同步的效能。

  • 推荐splitPk用户使用表主键,因为表主键通常情况下比较均匀,因此切分出来的分片也不容易出现数据热点。

  • 目前splitPk仅支持整型数据切分,不支持字符串、浮点和日期等其他类型 。如果您指定其他非支持类型,忽略splitPk功能,使用单通道进行同步。

  • 如果不填写splitPk,包括不提供splitPk或者splitPk值为空,数据同步视作使用单通道同步该表数据 。

where

筛选条件,在实际业务场景中,往往会选择当天的数据进行同步,将where条件指定为gmt_create>$bizdate

  • where条件可以有效地进行业务增量同步。如果不填写where语句,包括不提供where的key或value,数据同步均视作同步全量数据。

  • 不可以将where条件指定为limit 10,这不符合MySQL SQL WHERE子句约束。

Writer脚本Demo

{
"type": "job",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "analyticdb_for_mysql", //插件名。
"parameter": {
"postSql": [], //导入后的准备语句。
"tableType": null, //保留字段,默认空。
"datasource": "hangzhou_ads", //数据源名称。
"column": [ //同步字段。
"id",
"value"
],
"guid": null,
"writeMode": "insert", //写入模式,请参见writeMode参数说明。
"batchSize": 2048, //批量写入的大小,请参见batchSize参数说明。
"encoding": "UTF-8", //编码格式。
"table": "t5", //写入的表名。
"preSql": [] //导入前的准备语句。
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0", //配置文件格式的版本号。
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": "0" //错误记录数。
},
"speed": {
"throttle":true,//当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。
                        "concurrent":2, //作业并发数。
                        "mbps":"12"//限流,此处1mbps = 1MB/s。
}
}
}

Writer脚本参数

参数

描述

是否必选

默认值

datasource

数据源名称,脚本模式支持添加数据源,此配置项填写的内容必须与添加的数据源名称保持一致。

table

选取的需要同步的表名称。

writeMode

写入数据的方式,可选择insertreplaceupdate三种方式。

  • insert:当没有遇到主键/唯一性索引冲突时,数据会正常写入。当存在主键/唯一性索引冲突时,会自动忽略当前写入的数据,不做更新。

  • replace:当没有遇到主键/唯一性索引冲突时,数据会正常写入。当存在主键/唯一性索引冲突时,会先删除冲突数据所在的行,再插入新行,即新行会替换原有行的所有字段。

  • update:当没有遇到主键/唯一性索引冲突时,数据会正常写入。当存在主键/唯一性索引冲突时,会使用新行替换原有行的所有字段。

    说明

    仅脚本模式支持使用该方式。

insert

column

目标表需要写入数据的字段,字段之间用英文所逗号分隔,例如"column": ["id", "name", "age"]。如果要依次写入全部列,使用*表示, 例如"column": ["*"]

说明

如果字段名中包含select,请在字段名前后加上反引号。例如,item_select_no需要写为`item_select_no`

preSql

执行数据同步任务之前率先执行的SQL语句。目前向导模式仅允许执行一条SQL语句,脚本模式可以支持多条SQL语句,例如清除旧数据。

说明

当有多条SQL语句时,不支持事务。

postSql

执行数据同步任务之后执行的SQL语句,目前向导模式仅允许执行一条SQL语句,脚本模式可以支持多条SQL语句,例如加上某一个时间戳。

说明

当有多条SQL语句时,不支持事务。

batchSize

一次性批量提交的记录数大小,该值可以极大减少数据同步系统与MySQL的网络交互次数,并提升整体吞吐量。如果该值设置过大,会导致数据同步运行进程OOM异常。

1,024