DTS支持调用API接口,配置或查询DTS任务的迁移、同步或订阅对象。本文将为您介绍相关API接口,并提供对象的定义和配置案例。
相关接口及参数
API | 说明 |
---|---|
在请求参数Dblist 中配置DTS任务的迁移、同步或订阅的对象。 | |
在返回参数DbObject 中查询DTS任务的迁移、同步或订阅的对象。 |
迁移、同步或订阅对象定义说明
迁移、同步或订阅对象的数据类型为JSON,详细定义如下:
说明 请按需配置斜体部分的内容。
- 如迁移、同步或订阅对象包含多个库,则您可参考如下定义:
{ "待迁移、同步或订阅的库1的名称": { "name": "迁移、同步或订阅的库1在目标实例中的名称", "all": true(表示迁移、同步或订阅对象为整库) }, "待迁移、同步或订阅的库2的名称": { "name": "迁移、同步或订阅的库2在目标实例中的名称", "all": false(表示迁移、同步或订阅对象为非整库), "Table": { "待迁移、同步或订阅的表A的名称": { "name": "迁移、同步或订阅的表A在目标实例中的名称", "all": true(表示迁移、同步或订阅对象为整表), "dml_op": "需增量迁移或同步的DML操作", "ddl_op": "需增量迁移或同步的DDL操作" } } }, "待迁移、同步或订阅的库3的名称": { "name": "迁移、同步或订阅的库3在目标实例中的名称", "all": true(表示迁移、同步或订阅对象为整库), "dml_op": "需增量迁移或同步的DML操作", "ddl_op": "需增量迁移或同步的DDL操作" } }
- 如迁移、同步或订阅对象的颗粒度为列,或者包含过滤条件,则您可参考如下定义:
{ "待迁移、同步或订阅的库名": { "name": "迁移、同步或订阅的库在目标实例中的库名", "all": false(表示迁移、同步或订阅对象为非整库), "Table": { "待迁移、同步或订阅的表名A": { "name": "迁移、同步或订阅的表在目标实例中的表名A", "all": false(表示迁移、同步或订阅对象为非整表), "filter": "id>10" "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)", "sharedKey": false, "state": "checked" } }, "shard": 12 } } } }
- 如迁移、同步对象所属目标实例为云原生数据仓库AnalyticDB MySQL版、AnalyticDB PostgreSQL时,则您可参考如下定义:
{ "待迁移、同步的库的名称": { "name": "迁移、同步的库在目标实例中的名称", "all": false(固定为false。无论是对象为整库还是表级,如目标实例为AnalyticDB MySQL或AnalyticDB PostgreSQL,固定传入false,且还需传入表对应的分区键等信息), "Table": { "待迁移、同步的表A的名称": { "all": true(表示迁移、同步对象为整表), "name": "迁移、同步的表A在目标实例中的名称", "primary_key": "id(指定主键)", "type": "dimension(表的类型)", } "待迁移、同步的表B的名称": { "all": true(表示迁移、同步对象为整表), "name": "迁移、同步的表B在目标实例中的名称", "part_key": "id(指定分区键)", "primary_key": "id(指定主键)", "type": "partition(表的类型)", "tagColumnValue": "标签列的值" } } } }
参数 | 说明 |
---|---|
name | 源库、表、列名映射到目标库、表、列的名称。如源库名为dtssource,目标库名为dtstarget,则您需在name中传入dtstarget,表示把源库名映射成dtstarget后写入目标库中。 |
all | 是否选择全部表、列,取值:
|
Table | 待迁移、同步或订阅的表信息。 |
filter | 设置过滤条件,过滤待迁移、同步或订阅的数据。目前仅支持在表级别中体现。 |
column | 待迁移、同步或订阅的列信息。 |
key | 是否为主键,取值:
|
sharedKey | 是否为分片键,取值:
说明 当迁移、同步对象所属数据库的类型为Kafka时,才需配置本参数。 |
type | 该字段的数据类型。 |
state | 如为checked ,则表示该列被选中。 |
shard | 待迁移、同步的表的分片数量。 说明 当迁移、同步数据所属数据库的类型为Kafka时,才需配置本参数。 |
dml_op | 选择增量迁移或同步的DML操作,取值及意思如下:
|
ddl_op | 选择增量迁移或同步的DDL操作。取值及意思如下:
|
primary_key | 表示主键。当目标实例为云原生数据仓库AnalyticDB MySQL版、AnalyticDB PostgreSQL时,本参数才可用且必须传入。 |
part_key | 表示分区键。当目标实例为云原生数据仓库AnalyticDB MySQL版、AnalyticDB PostgreSQL时,本参数才可用且必须传入。 |
type 重要 此处的 type 参数与代表字段数据类型的type 参数。 | 当目标实例为云原生数据仓库AnalyticDB MySQL版、AnalyticDB PostgreSQL时,您需要指明迁移、同步对象的表类型:
|
tagColumnValue | 自定义__dts_data_source标签列的值。当目标实例为云原生数据仓库AnalyticDB MySQL版时,本参数才可用且必须传入。 |
迁移、同步或订阅对象配置示例
- 示例一:迁移、同步或订阅dtstestdata库中所有的表。
{"dtstestdata": { "name": "dtstestdata", "all": true }}
- 示例二:迁移、同步或订阅dtstestdata库,并修改库名为dtstestdata_new。
{"dtstestdata": { "name": "dtstestdata_new", "all": true }}
- 示例三:迁移、同步或订阅dtstestdata库中部分表(如customer)。
{"dtstestdata": { "name": "dtstestdata", "all": false, "Table": { "customer": { "name": "customer", "all": true, "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)", "sharedKey": false, "state": "checked" }, "gmt_create": { "key": "", "name": "gmt_create", "type": "datetime", "sharedKey": false, "state": "checked" }, "gmt_modify": { "key": "", "name": "gmt_modify", "type": "datetime", "sharedKey": false, "state": "checked" }, "valid_time": { "key": "", "name": "valid_time", "type": "datetime", "sharedKey": false, "state": "checked" }, "creator": { "key": "", "name": "creator", "type": "varchar(200)", "sharedKey": false, "state": "checked" } }, "shard": 12 } } } }
- 示例四:迁移、同步或订阅dtstestdata库中的表(如customer和order)的部分列。
{"dtstestdata": { "name": "dtstestdata", "all": false, "Table": { "customer": { "name": "customer", "all": false, "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)", "sharedKey": false, "state": "checked" }, "level": { "key": "", "name": "level", "type": "varchar(5000)", "sharedKey": false, "state": "checked" }, "name": { "key": "", "name": "name", "type": "varchar(500)", "sharedKey": false, "state": "checked" }, }, "shard": 12 }, "order": { "name": "order", "all": false, "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)", "sharedKey": false, "state": "checked" } }, "shard": 12 } } } }
- 示例五:迁移、同步或订阅dtstestdata库中的表(如customer、order、commodity)至目标实例云原生数据仓库AnalyticDB MySQL版、AnalyticDB PostgreSQL中。
{ "dtstestdata": { "name": "dtstestdatanew", "all": false, "Table": { "order": { "name": "ordernew", "all": true, "part_key": "id", "primary_key": "id", "type": "partition" }, "customer": { "name": "customernew", "all": true, "primary_key": "id", "type": "dimension" }, "commodity": { "name": "commoditynew", "all": false, "filter": "id>10", "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)" } }, "part_key": "id", "primary_key": "id", "type": "partition" } } } }
支持的正则表达式
符号 | 规则描述 |
---|---|
英文句号(.) | 表示匹配除‘\r\n’之外的任何单个字符。 |
星号(*) | 表示匹配前面子表达式任意次,例如:h.*llo 将匹配 hllo或heeeello等字符串。 |
英文问号(?) | 表示匹配前面子表达式零次或1次,例如:h.?llo 将匹配hllo或hello,但不能匹配haello。 |
[characters] 字符集合 | 表示匹配方括号内任意一个字符,例如:h[ae]llo 将匹配hallo或hello。 |
[^characters] 负值字符集合 | 表示不匹配方括号内任意一个字符,例如:h[^ae]llo 将匹配hcllo或hdllo,但不能匹配hallo或hello。 |
[character1-character2] 字符范围 | 表示匹配character1-character2范围内的字符,例如: [0-9]、[a-z]。 |