更新时间:2024-10-25 GMT+08:00

批量异步创建任务

功能介绍

批量异步创建任务,根据请求参数不同,可以批量异步创建实时迁移、实时同步、实时灾备等任务。

接口约束

  • 目前仅支持Redis->GeminiDB Redis迁移、Redis集群->GeminiDB Redis迁移、MySQL->MySQL同步、Oracle->GaussDB分布式同步场景。
  • 仅支持部分Region使用,详情参考终端节点

URI

POST /v5/{project_id}/jobs/batch-async-create

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

租户在某一Region下的Project ID。

获取方法请参见获取项目ID

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

String

发送的实体的MIME类型。推荐用户默认使用application/json,如果API是对象、镜像上传等接口,媒体类型可按照流类型的不同进行确定。

缺省值:application/json

X-Auth-Token

String

从IAM服务获取的用户Token。

用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。

请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。

X-Language

String

请求语言类型。

枚举值:

  • en-us
  • zh-cn
表3 请求Body参数

参数

是否必选

参数类型

描述

jobs

Array of objects

异步创建任务请求体。

详情请参见表4

表4 jobs字段数据结构说明

参数

是否必选

参数类型

描述

base_info

Object

创建任务基本信息体。

详情请参见表5

source_endpoint

Array of objects

创建任务数据库信息体。

详情请参见表7

target_endpoint

Array of objects

创建任务数据库信息体。

详情请参见表7

alarm_notify

Object

异常通知信息设置信息体。配置该参数时,代表当任务状态异常时,系统将发送通知给指定的SMN Topic。

详情请参见表14

speed_limit

Array of objects

限速信息体。

  • 限速:自定义的最大迁移速度,迁移过程中的迁移速度将不会超过该速度。
  • 不限速:对迁移速度不进行限制,通常会最大化使用源数据库的出口带宽。

该流速模式同时会对源数据库造成读消耗,消耗取决于源数据库的出口带宽。比如:源数据库的出口带宽为100MB/s,假设高速模式使用了80%带宽,则迁移对源数据库将造成80MB/s的读操作IO消耗。

详情请参见表15

user_migration

Object

用户迁移信息体。

详情请参见表16

policy_config

Object

策略信息体。设置迁移和同步任务的策略,包括冲突策略、过滤DROP Database、对象同步范围等。

详情请参见表19

db_object

Object

数据库对象信息体。实时迁移、实时同步,选择需要迁移的数据库或者表。

详情请参见表20

db_param

Object

数据库参数信息体。

详情请参见表26

tuning_params

Object

高级设置信息体。

详情请参见表28

period_order

Object

包年/包月信息体。

详情请参见表30

node_info

Object

创建任务实例信息体。

详情请参见表31

public_ip_list

Array of objects

指定公网IP的信息。

详情请参见表35

表5 base_info字段数据结构说明

参数

是否必选

参数类型

描述

name

String

任务名称。 约束:任务名称在4位到50位之间,不区分大小写,可以包含字母、数字、中划线或下划线,不能包括其他特殊字符。

  • 最小长度:4
  • 最大长度:50

最小长度:4

最大长度:50

job_type

String

任务场景。取值:

  • migration:实时迁移。
  • sync:实时同步。
  • cloudDataGuard:实时灾备。

枚举值:

  • migration
  • sync
  • cloudDataGuard

multi_write

Boolean

灾备类型是否双主灾备。说明:

  • job_type 是cloudDataGuard时,必填,灾备类型是双主灾备时,multi_write取值true, 否则为false。
  • job_type 是其他类型时,multi_write是非必选参数。

engine_type

String

引擎类型。取值:

  • oracle-to-gaussdbv5:Oracle同步到GaussDB分布式版,实时同步场景使用。
  • redis-to-gaussredis:Redis迁移到GeminiDB Redis,实时迁移场景使用。
  • rediscluster-to-gaussredis:Redis集群迁移到GeminiDB Redis,实时迁移场景使用。

枚举值:

  • oracle-to-gaussdbv5
  • redis-to-gaussredis
  • rediscluster-to-gaussredis

job_direction

String

迁移方向。取值:

  • up:入云 ,灾备场景时对应本云为备。
  • down:出云,灾备场景时对应本云为主。
  • non-dbs:自建。

枚举值:

  • up
  • down
  • non-dbs

task_type

String

迁移模式。取值:

  • FULL_TRANS :全量。
  • FULL_INCR_TRANS:全量+增量。
  • INCR_TRANS:增量。

枚举值:

  • FULL_TRANS
  • FULL_INCR_TRANS
  • INCR_TRANS

net_type

String

网络类型。取值:

  • eip:公网网络。
  • vpc:VPC网络,灾备场景不支持选择VPC网络。
  • vpn:VPN、专线网络。

枚举值:

  • eip
  • vpc
  • vpn

charging_mode

String

计费模式,默认按需。取值:

  • period:包周期。
  • on_demand:按需。

枚举值:

  • period
  • on_demand

enterprise_project_id

String

企业项目ID。 缺省值:"0",表示"default"企业项目。

缺省值:0

description

String

任务描述。 约束:任务描述不能超过256位,且不能包含!<>&'"\特殊字符。

最小长度:0

最大长度:256

start_time

String

任务定时启动时间。

expired_days

String

任务处于异常状态一段时间后,将会自动结束。单位为天。(范围14-100),不传默认为14天。

缺省值:14

tags

Array of objects

标签信息,最多添加20个标签。

详情请参见表6

is_open_fast_clean

Boolean

是否开启云数据库RDS for MySQL、MariaDB的Binlog快速清理。不传默认为false,不开启快速清理。

表6 tags字段数据结构说明

参数

是否必选

参数类型

描述

key

String

标签键。 约束:最大长度36,只能包含字母、数字、下划线、中划线和中文。

最小长度:1

最大长度:36

value

String

标签值。 约束:最大长度43,只能包含字母、数字、下划线、中划线和中文。

最小长度:1

最大长度:43

表7 source_endpoint和target_endpoint字段数据结构说明

参数

是否必选

参数类型

描述

db_type

String

数据库类型。取值:

  • oracle:Oracle。
  • gaussdbv5:GaussDB分布式版。
  • redis:Redis。
  • rediscluster:Redis集群版。
  • gaussredis: GeminiDB Redis。

枚举值:

  • oracle
  • gaussdbv5
  • redis
  • rediscluster
  • gaussredis

endpoint_type

String

数据库实例类型。取值:

  • offline:自建数据库。
  • ecs:华为云ECS自建数据库。
  • cloud:华为云数据库。

枚举值:

  • offline
  • ecs
  • cloud

endpoint_role

String

数据库实例角色。取值:

  • so:源库。
  • ta:目标库。

枚举值:

  • so
  • ta

endpoint

Object

数据库基本信息体。

详情请参见表8

cloud

Object

数据库实例所在Region,项目等信息。

详情请参见表9

vpc

Object

数据库实例所在VPC,子网,安全组等信息。

详情请参见表10

config

Object

数据库基本设置信息体。

详情请参见表11

ssl

Object

数据库SSL证书信息体。

详情请参见表12

customized_dns

Object

客户自定义DNS服务。

详情请参见表13

表8 endpoint和source_sharding字段数据结构说明

参数

是否必选

参数类型

描述

id

String

数据库信息ID。

endpoint_name

String

数据库场景类型。取值:

  • oracle:云下自建Oracle数据库。
  • ecs_oracle:华为云ECS自建Oracle数据库。
  • cloud_gaussdbv5:华为云数据库GaussDB分布式。
  • mysql:他云/本地自建MySQL数据库。
  • ecs_mysql:华为云ECS自建MySQL数据库。
  • cloud_mysql:华为云数据库RDS for MySQL。
  • redis:云下自建Redis数据。
  • ecs_redis:华为云ECS自建Redis数据。
  • rediscluster:云下自建Redis集群数据库。
  • ecs_rediscluster:华为云ECS自建Redis集群数据库。
  • cloud_gaussdb_redis:华为云数据库GeminiDB Redis。

枚举值:

  • oracle
  • ecs_oracle
  • cloud_gaussdbv5
  • mysql
  • ecs_mysql
  • cloud_mysql
  • redis
  • ecs_redis
  • rediscluster
  • ecs_rediscluster
  • cloud_gaussdb_redis

ip

String

数据库IP。约束:

  • 数据库为自建MongoDB时,数据库IP与端口之间用“:”英文冒号拼接,多个值之间请用“,”英文逗号隔开,最多支持填写3个IP地址或域名。
  • 数据库为DDS实例时,数据库IP与端口之间用“:”英文冒号拼接,多个IP端口之间请用“,”英文逗号分隔。
  • 数据库为Redis集群时,请填写源端Redis集群所有分片的IP地址和对应端口,数据库IP与端口之间用“:”英文冒号拼接,多个IP端口之间请用“,”英文逗号分隔,并且推荐填写集群分片的Slave节点的IP地址。最多支持填写32个IP地址或域名,多个值之间请用英文逗号隔开。

示例:

  • MongoDB:192.168.0.10:8080,192.168.0.11:8080,192.168.0.12:8080
  • DDS:192.168.205.130:8635,192.168.250.64:8635
  • Redis集群:192.168.0.1:8080,192.168.0.2:8080

db_port

String

数据库端口。

约束:输入范围为1-65535之间的整数。

db_user

String

数据库用户名。

db_password

String

数据库密码。

instance_id

String

华为云数据库实例ID。

instance_name

String

华为云数据库实例名称。

db_name

String

指定数据库名称。例如:

  • oracle:serviceName.orcl。

source_sharding

Array of objects

物理源库信息。

详情请参见表8

表9 cloud字段数据结构说明

参数

是否必选

参数类型

描述

region

String

区域ID,当数据库实例类型为ecs(华为云ECS自建数据库),cloud(华为云数据库)时为必填项。获取方法请参见地区和终端节点。 注意:当该Region下存在子项目时,Region ID为区域项目ID与子项目ID,由“_”下划线拼接。

project_id

String

租户在某一Region下的Project ID。

获取方法请参见获取项目ID

az_code

String

数据库所在可用分区(AZ)名称。

表10 vpc字段数据结构说明

参数

是否必选

参数类型

描述

vpc_id

String

数据库实例所在的虚拟私有云ID,获取方法如下:

方法1:登录虚拟私有云服务的控制台界面,在虚拟私有云的详情页面查找VPC ID。

方法2:通过虚拟私有云服务的API接口查询,具体操作可参考查询VPC列表

subnet_id

String

数据库实例所在子网ID,获取方法如下:

方法1:登录虚拟私有云服务的控制台界面,单击VPC下的子网,进入子网详情页面,查找网络ID。

方法2:通过虚拟私有云服务的API接口查询,具体操作可参考查询子网列表

security_group_id

String

数据库实例所在的安全组ID,获取方法如下:

方法1:登录虚拟私有云服务的控制台界面,在安全组的详情页面查找安全组ID。

方法2:通过虚拟私有云服务的API接口查询,具体操作可参考查询安全组列表

表11 config字段数据结构说明

参数

是否必选

参数类型

描述

is_target_readonly

Boolean

目标实例是否设置为为只读。MySQL迁移和灾备,且job_direction为up时设置有效。(灾备场景下,单主灾备且本云为备为必填且为true,不填默认设置为true)。

缺省值:true

node_num

Integer

Redis集群到GeminiDB Redis迁移场景填写,连接源端Redis集群的子任务个数,输入值在1到16之间,且输入值不能大于源端Redis集群的分片个数,请根据源端Redis集群的规模合理选择。建议集群的每4个分片设置1个源端分片个数,即每1个子任务连接源端集群的4个分片。

最小值:1

最大值:16

缺省值:0

表12 ssl字段数据结构说明

参数

是否必选

参数类型

描述

ssl_link

Boolean

是否SSL安全连接。如果数据库启用了SSL安全连接,参数值为true。

ssl_cert_name

String

SSL证书名字。

ssl_cert_key

String

SSL证书内容,用base64加密。

ssl_cert_check_sum

String

SSL证书内容checksum值,后端校验,源库安全连接必选。

ssl_cert_password

String

SSL证书密码,证书文件后缀为.p12时必填。

表13 customized_dns字段数据结构说明

参数

是否必选

参数类型

描述

is_set_dns

Boolean

是否设置客户自定义DNS。

set_dns_action

String

设置客户自定义DNS的行为。

  • add:新增客户自定义DNS IP。
  • keep:保持客户自定义DNS IP。
  • update:更新客户自定义DNS IP(当DNS IP变化时更新生效)。
  • recover:还原系统默认DNS IP(还原时可能会导致域名解析失败,请谨慎操作)。

枚举值:

  • add
  • keep
  • update
  • recover

dns_ip

String

设置客户自定义DNS IP。

最小长度:0

最大长度:15

表14 alarm_notify字段数据结构说明

参数

是否必选

参数类型

描述

alarm_to_user

Boolean

异常告警是否通知用户。

缺省值:false

topic_urn

String

SMN主题URN。

delay_time

Long

时延阈值(单位为s)。取值:

  • 最小值:1
  • 最大值:3600
  • 缺省值:0
说明:
  1. 源数据库和目标数据库之间的同步有时会存在一个时间差,称为时延,单位为秒。
  2. 时延阈值设置是指时延超过一定的值并持续6分钟后,DRS可以发送通知给指定收件人。(初次进入增量迁移阶段,会有较多数据等待同步,存在较大的时延,属于正常情况,不在此功能的监控范围之内。)
  3. 只有全量+增量的任务支持此选项。

rpo_delay

Long

RPO时延阈值(单位为s)。取值:

  • 最小值:1
  • 最大值:3600
  • 缺省值:0
说明:

RPO时延阈值设置是业务数据库与DRS实例间同步的时延超过一定的值并持续6分钟后,DRS可以发送通知给指定收件人。(初次进入增量灾备阶段,会有较多数据等待同步,存在较大的时延,属于正常情况,不在此功能的监控范围之内。)

rto_delay

Long

RTO时延阈值(s)。取值:

  • 最小值:1
  • 最大值:3600
  • 缺省值:0
说明:

RTO时延阈值设置是DRS实例与灾备数据库间同步的时延超过一定的值并持续6分钟后,DRS可以发送通知给指定收件人。

表15 speed_limit字段数据结构说明

参数

是否必选

参数类型

描述

begin

String

开始限速时间,此时间为UTC时间,开始时间为整时,如果有分钟,则会忽略,格式为hh:mm,小时数为两位,例如:01:00。

end

String

结束时间,此时间为UTC时间,输入必须为59分结尾,格式为hh:mm,例如:15:59。

speed

String

限速值,取值范围为1~9999,单位为MB/s。

表16 user_migration字段数据结构说明

参数

是否必选

参数类型

描述

is_migrate_user

Boolean

是否迁移用户。

is_set_password

Boolean

是否统一重置密码。取值:

  • true:重置密码为统一密码。
  • false:不统一重置密码。 当前支持的场景:
  • 实时迁移场景:MySQL迁移。

password

String

重置后的统一密码。统一重置密码为true时必填。 约束:密码不能为空。

user_list

Array of objects

用户迁移信息用户列表字段。当前支持的场景:

  • 实时迁移场景:MySQL->MySQL迁移,MongoDB->DDS迁移。

详情请参见表17

role_list

Array of objects

用户迁移信息角色列表字段。当前支持的场景:

  • 实时迁移场景:MongoDB->DDS迁移。

详情请参见表18

表17 user_list字段数据结构说明

参数

是否必选

参数类型

描述

id

String

用户ID。

account

String

用户。

is_set_password

Boolean

是否重置该用户密码。当前支持的场景:

  • 实时迁移场景:MySQL->MySQL迁移。

password

String

重置后的密码。统一重置密码或单个用户重置密码为true时必填,约束:密码不能为空。

表18 role_list字段数据结构说明

参数

是否必选

参数类型

描述

role

String

角色。

表19 policy_config字段数据结构说明

参数

是否必选

参数类型

描述

filter_ddl_policy

String

过滤DDL策略。取值:

  • drop_database

场景区别:

  • 实时迁移场景:MySQL迁移可填"",表示不过滤DROP DATABASE。
  • 实时同步场景:MySQL同步只能填"drop_database"。

枚举值:

  • drop_database

conflict_policy

String

增量阶段冲突策略。该冲突策略特指增量同步中的冲突处理策略,全量阶段的冲突默认忽略。取值:

  • ignore:忽略。当同步数据与目标库已有数据冲突时(主键/唯一键重复等),DRS将忽略源库的冲突数据,并保留目标库中的冲突数据,继续进行后续同步。
  • stop:报错。当同步数据与目标库已有数据冲突时(主键/唯一键重复等),同步任务将失败并立即中止。可在同步日志中查看详细信息。
  • overwrite:覆盖。当同步数据与目标库已有数据冲突时(主键/唯一键重复等),将覆盖原来的冲突数据。

场景区别:

  • 实时迁移场景:不支持。
  • 实时同步场景:支持。

枚举值:

  • ignore
  • stop
  • overwrite

index_trans

Boolean

对象同步范围:是否同步普通索引。DRS将默认同步主键/唯一索引,普通索引是指除主键/唯一索引以外的其他类型索引。取值:

  • true:将会同步全部的索引。
  • false:仅同步主键/唯一索引,普通索引不会同步。

缺省值:true

ddl_trans

Boolean

对象同步范围:同步增量阶段是否同步DDL。取值:

  • true:增量阶段同步DDL。
  • false:增量阶段不同步DDL。

缺省值:true

data_sync_topology_type

String

数据同步拓扑。数据同步功能支持多种同步拓扑,您可以根据业务需求规划您的同步实例。参考链接。取值:

  • one2one:一对一。
  • one2many:一对多。
  • many2one:多对一。

缺省值:one2one

枚举值:

  • one2one
  • one2many
  • many2one

support_ddl_info

String

增量支持的DDL。取值:

  • CREATE_TABLE:创建表。
  • ADD_COLUMN:加列。
  • MODIFY_COLUMN:改列属性。
  • CHANGE_COLUMN:改列属性。
  • DROP_INDEX:删除索引。
  • ADD_INDEX:加索引。
  • CREATE_INDEX:创建索引。
  • RENAME_INDEX:重命名索引。

使用提示:

  • 一对一,一对多场景,如果业务上认为源和目标应该使用保持严格一致,那么高危类DDL也应该勾选并同步。
  • 一对一,一对多场景,如果业务上确定某个高危DDL不应该发生,则可以不勾选同步高危类DDL,这样DRS将拦截过滤这个DDL,从而起到保护目标数据的作用,但需要知晓过滤DDL的附带问题是可能导致同步失败,例如过滤删列动作。
  • 多对一数据聚合场景,最佳实践是推荐只选择同步加列DDL,其他大部分DDL同步都因目标表修改而导致其他任务失败/数据不一致的情况发生,常见情况有:
    • 同步truncate导致目标数据全部被清空。
    • 同步创建索引导致目标表被锁定。
    • 同步rename导致其他任务找不到目标表而失败。
    • 同步改列导致其他任务因数据类型不兼容而失败。

枚举值:

  • CREATE_TABLE
  • ADD_COLUMN
  • MODIFY_COLUMN
  • CHANGE_COLUMN
  • DROP_INDEX
  • ADD_INDEX
  • CREATE_INDEX
  • RENAME_INDEX

sync_type_policy

String

同步数据类型。取值:

  • supportAllType:同步所有类型
  • tableData:同步数据
  • tableStructure:同步表结构
  • constraintData:索引同步
说明:

除supportAllType以外,其他类型可组合填写,例如:"tableData,tableStructure" 。

increment_read_mode

String

oracle到GaussDB增量读取方式:logminer,xstream。

dml_types

String

DML同步类型。取值:

  • i:INSERT
  • u:UPDATE
  • d:DELETE

is_create_table_with_index

Boolean

索引与表结构是否同时建立。

表20 db_object字段数据结构说明

参数

是否必选

参数类型

描述

object_scope

String

数据库对象迁移或同步范围。取值:

  • all:全部迁移。
  • database:库级迁移或同步。
  • table:表级迁移或同步。

枚举值:

  • all
  • database
  • table

target_root_db

Object

数据库对象迁移或同步目标库,两层到三层数据库同步需要填写。

详情请参见表21

object_info

Map<String,DatabaseObject>

数据库对象迁移或同步信息,object_scope为all时不填,为库级或表级时必填。

详情请参见表22

表21 target_root_db字段数据结构说明

参数

是否必选

参数类型

描述

db_name

String

库名。

db_encoding

String

默认编码格式是utf8。

表22 object_info字段数据结构说明

参数

是否必选

参数类型

描述

sync_type

String

该数据库在实时同步场景下的类型。取值:

config:仅当该库作为数据过滤高级设置的关联库时,需要填写,此时该库以及该库下的schemas、tables“不会”被同步到目标库,name、all属性不生效,schemas、tables需要填写被关联的相关对象。

说明:

如果需要同步该库级对象,则在下级对象中填写sync_type值为config。

枚举值:

  • config

name

String

该数据库在目标库的名称(库名映射)。

all

Boolean

是否整库迁移或同步。

说明:
  • 当该库下的模式、表、列需要做数据过滤、列过滤、列映射时,填false,否则填true。
  • 当该库下的表需要做附加列时,需要填true,并且在表级对象的columns里填写附加列信息。
  • 当该库下的表所包含的列作为数据过滤高级设置的关联列时,需要填true,并且在columns里填写关联列信息,在config_conditions填写数据过滤高级设置的配置条件。

schemas

Map<String,SchemaObject>

需要迁移或同步的模式,当整库迁移或同步为false时需要填写。

详情请参见表23

tables

Map<String,TableObject>

需要迁移或同步的表,当整库迁移或同步为false时需要填写。

详情请参见表24

total_table_num

Integer

库下的表的数量,表的数量超过阈值就不显示。

is_synchronized

Boolean

是否已经进行同步。

表23 schemas字段数据结构说明

参数

是否必选

参数类型

描述

sync_type

String

该模式在实时同步场景下的类型。取值:

config:仅当该模式作为数据过滤高级设置的关联模式时,需要填写,此时该模式以及该模式下的tables“不会”被同步到目标库,name、all属性不生效,tables需要填写被关联的相关对象。

说明:

如果需要同步该模式对象,则在下级对象中填写sync_type值为config。

name

String

该模式在目标库的名称(模式名映射)。

all

Boolean

是否整模式迁移或同步。

说明:
  • 当该模式下的表、列需要做数据过滤、列过滤、列映射时,填false,否则填true。
  • 当该模式下的表需要做附加列时,需要填true,并且在表级对象的columns里填写附加列信息。
  • 当该模式下的表所包含的列作为数据过滤高级设置的关联列时,需要填true,并且在columns里填写关联列信息、config_conditions填写数据过滤高级设置的配置条件。

tables

Map<String,TableObject>

需要迁移或同步的表,当整模式迁移或同步为false时需要填写。

详情请参见表24

表24 tables字段数据结构说明

参数

是否必选

参数类型

描述

sync_type

String

该表在实时同步场景下的类型。取值:

config:仅当该表作为数据过滤高级设置的关联表时,需要填写,此时该表以及该表下的columns“不会”被同步到目标库,name、all、filtered、filter_conditions属性不生效,columns需要填写被关联的相关对象,config_conditions需要填写数据过滤高级设置的配置条件。

说明:

如果需要同步该表级对象,则在下级对象中填写sync_type值为config。

type

String

对象类型。取值:

  • table:表。
  • view:视图。
  • procedure:存储过程。

枚举值:

  • table
  • view
  • procedure

name

String

该表在目标库的名称(表名映射)。

all

Boolean

是否整表迁移或同步。

说明:
  • 当该表不需要做列过滤、列映射时,填true,如果需要做列过滤、列映射则填false。
  • 当该表需要做附加列时,需要填true,并且在columns里填写附加列信息。
  • 当该表所包含的列作为数据过滤高级设置的关联列时,需要填true,并且在columns里填写关联列信息、config_conditions填写数据过滤高级设置的配置条件。

db_alias_name

String

一对多情况下,表级上对库名的映射。

schema_alias_name

String

一对多情况下,表级上对schema名的映射。

filtered

Boolean

该表是否进行数据过滤。

filter_conditions

Array of strings

该表数据的过滤条件,生成加工规则值为SQL条件语句,长度限制512。

最小长度:0

最大长度:512

config_conditions

Array of strings

该表数据过滤高级设置的配置条件,当该表作为联表查询时填写,生成加工规则值为SQL条件语句,长度限制512。

最小长度:0

最大长度:512

is_synchronized

Boolean

是否已经进行同步。

columns

Map<String,ColumnObject>

需要同步/映射/过滤/新增的列,当需要列过滤、列映射、附加列功能时填写,仅在实时同步任务中生效,当整表同步为false时需要填写。

详情请参见表25

表25 columns字段数据结构说明

参数

是否必选

参数类型

描述

sync_type

String

该列在实时同步场景下的类型。取值:

config:当该列作为数据过滤高级设置的关联列时,需要填写,同时如果该列是主建或优化查询所需的索引,则需要填写primary_key_for_data_filtering或index_for_data_filtering。

说明:

是否同步该列到目标库由“filtered”属性控制,与库级、模式级、表级控制方式不同。

primary_key_for_data_filtering

String

该列是否在数据过滤高级设置场景下为主键,如果是主建则填该列列名,否则不填。

index_for_data_filtering

String

优化查询所需的索引,将会为缓存数据增加索引,不会影响源表,当该列作为数据过滤高级设置的关联索引时,需要填写,否则不填。

name

String

该列在目标库的名称(列名映射),当该列为“附加列”时须与数据库表级对象中列名保持一致。

type

String

该列字段的数据类型。 列过滤:填写源列字段的数据类型。 附加列:新填充的列指定字段的数据类型,根据不同操作类型来决定取值范围与约束。取值:

  • 以默认值方式,支持:int,long,varchar(256),datetime,timestamp。
  • 以create_time为列,支持:long,datetime,timestamp。
  • 以update_time为列,支持:long,datetime,timestamp。
  • 以表达式为列,支持:varchar(256),且列值仅为:concat(__current_database, '@', __current_table)
  • 以serverName@database@table为列,支持:varchar(256)。

primary_key_for_column_filtering

String

该列是否在列映射场景下为主键,如果是主建则填PRI,否则填空。

filtered

Boolean

该列是否进列过滤,不能与附加列additional同时使用。取值:

  • true:表示同步该列。
  • false:表示过滤该列不同步。

additional

Boolean

该列是否为附加列,当该列为附加列时:name必须与表级对象中列名一致,并且不能与列过滤filtered同时使用。

operation_type

String

操作类型,以特定的操作类型填充新加的列。取值:

  • 以默认值方式:"operation_type":"ADDITIONALCOLUMN,default_value"
  • 以create_time为列:"operation_type":"ADDITIONALCOLUMN,create_time"
  • 以update_time为列:"operation_type":"ADDITIONALCOLUMN,update_time"
  • 以表达式为列:"operation_type":"ADDITIONALCOLUMN,expression"
  • 以serverName@database@table为列:"operation_type":"ADDITIONALCOLUMN,server_database_table"

value

String

附加列的值。约束:

  • 当操作类型仅“以默认值方式”,“以serverName@database@table为列”时,才支持输入对应字段类型的值。
  • 当操作类型为“以表达式为列”时,该字段为固定值"concat(__current_database, '@', __current_table)",不需要填写。
表26 db_param字段数据结构说明

参数

是否必选

参数类型

描述

common

Array of objects

常规参数。只有对比结果为不一致的目标库参数能被修改。

详情请参见表27

performance

Array of objects

性能参数。对比结果一致也可以修改目标库的值。

详情请参见表27

表27 common和performance字段数据结构说明

参数

是否必选

参数类型

描述

key

String

数据库参数名。

target_value

String

目标数据库参数值。

表28 tuning_params字段数据结构说明

参数

是否必选

参数类型

描述

full_sync

Array of objects

全量调优参数。

详情请参见表29

incre_capture

Array of objects

增量抓取调优参数。

详情请参见表29

incre_apply

Array ofobjects

增量回放调优参数。

详情请参见表29

incre_relay

Array of objects

增量日志拉取调优参数。

详情请参见表29

表29 full_sync、incre_capture、incre_apply和incre_relay字段数据结构说明

参数

是否必选

参数类型

描述

param_name

String

参数名称。

param_value

String

参数取值。

availability

Boolean

是否可用。

表30 period_order字段数据结构说明

参数

是否必选

参数类型

描述

period_type

Integer

订购周期类型。取值:

  • 2:月。
  • 3:年。

缺省值:3

枚举值:

  • 2
  • 3

period_num

Integer

订购周期数。根据period_type取值不同,代表不同周期数,例如:

  • 当period_type为2时,period_num为1代表1月。
  • 当period_type为3时,period_num为1代表1年。

is_auto_renew

Integer

是否自动续订。取值:

  • 0:否(默认值,需要客户手动去支付)。
  • 1:是(自动支付)。

缺省值:0

枚举值:

  • 0
  • 1
表31 node_info字段数据结构说明

参数

是否必选

参数类型

描述

spec

Object

任务实例规格信息体。

详情请参见表32

vpc

Object

任务实例VPC信息体,自建任务必填。

详情请参见表33

base_info

Object

任务实例VPC信息体,自建任务必填。

详情请参见表34

表32 spec字段数据结构说明

参数

是否必选

参数类型

描述

node_type

String

实例规格编码。取值:

  • micro:极小规格。
  • small:小规格。
  • medium:中规格。
  • high:大规格。

枚举值:

  • micro
  • small
  • medium
  • high
表33 vpc字段数据结构说明

参数

是否必选

参数类型

描述

vpc_id

String

任务实例所在虚拟私有云ID。

subnet_id

String

任务实例所在子网ID。

custom_node_ip

String

指定创建任务实例IP地址,多个IP端口之间请用“,”英文逗号分隔,目前仅支持设置IPv4地址,获取方法如下:

  • 方法1:登录虚拟私有云服务的控制台界面,单击VPC下的子网,进入子网详情页面,查找子网的网段,选择未被占用的IP 。
  • 方法2:通过虚拟私有云服务的API接口查询,具体操作可参考查询私有IP列表,选择“device_owner”为空的私有IP。 示例: "192.168.0.10,192.168.0.11"

security_group_id

String

任务实例所在的安全组ID。

表34 base_info字段数据结构说明

参数

是否必选

参数类型

描述

instance_type

String

实例类型。取值:

  • single:单机。
  • ha:主备。

枚举值:

  • single
  • ha

arch

String

CPU架构。取值:

  • x86
  • arm

枚举值:

  • x86
  • arm

availability_zone

String

可用区ID。约束:对于任务实例类型不是单机的实例,需要分别为实例所有节点指定可用区,并用“,”英文逗号隔开。示例:

  • 实例类型为single:"cn-north-4a"
  • 实例类型为ha:"cn-north-4a,cn-north-4b"

status

String

状态。

role

String

任务主备角色。

表35 public_ip_list字段数据结构说明

参数

是否必选

参数类型

描述

id

String

指定公网IP的ID。

public_ip

String

指定公网IP。

type

String

指定公网IP绑定任务的类型:

  • 主备任务:主是master,备是slave。
  • 其他固定为master。

枚举值:

  • master
  • slave

响应参数

状态码: 202

表36 响应Body参数

参数

参数类型

描述

job

Object

批量创建异步任务响应体。

详情请参见表37

表37 job字段数据结构说明

参数

参数类型

描述

async_job_id

String

批量异步创建的任务ID。

状态码: 400

表38 响应Body参数

参数

参数类型

描述

error_code

String

错误码。

最小长度:12

最大长度:12

error_msg

String

错误描述。

最小长度:1

最大长度:512

请求示例

  • 批量异步创建Oracle到GaussDB分布式版按需实时同步任务,任务模式为全量+增量,公网网络类型。
    https://{endpoint}/v5/054ba152d480d55b2f5dc0069e7ddef0/jobs/batch-async-create
    
    {
      "jobs" : [ {
        "base_info" : {
          "name" : "DRS-1234",
          "job_type" : "sync",
          "engine_type" : "oracle-to-gaussdbv5",
          "job_direction" : "up",
          "task_type" : "FULL_INCR_TRANS",
          "net_type" : "eip",
          "charging_mode" : "on_demand",
          "enterprise_project_id" : "0",
          "description" : "",
          "expired_days" : "14",
          "tags" : [ {
            "key" : "test",
            "value" : "test"
          } ]
        },
        "source_endpoint" : [ {
          "db_type" : "oracle",
          "endpoint_type" : "offline",
          "endpoint_role" : "so",
          "endpoint" : {
            "endpoint_name" : "oracle",
            "ip" : "10.154.217.239",
            "db_port" : "1521",
            "db_user" : "ORACLE_USER",
            "db_name" : "serviceName.orcl",
            "db_password" : "******"
          },
          "ssl" : {
            "ssl_link" : false
          }
        } ],
        "target_endpoint" : [ {
          "db_type" : "gaussdbv5",
          "endpoint_type" : "cloud",
          "endpoint_role" : "ta",
          "endpoint" : {
            "endpoint_name" : "cloud_gaussdbv5",
            "instance_id" : "c2c7579bc09c490b9d8009db715aeb0ain14",
            "db_user" : "root",
            "db_password" : "******"
          },
          "cloud" : {
            "region" : "cn-north-4",
            "project_id" : "9dc8c0f3f74c4dbb23c29cf0318ee561",
            "az_code" : "cn-north-4a,cn-north-4g,cn-north-4c"
          },
          "vpc" : {
            "vpc_id" : "2cb5d364-ae63-4fbb-85b7-7d59f4a88f8f",
            "subnet_id" : "2cb54324-ae63-4fbb-85b7-7d59f4a88f8f",
            "security_group_id" : "039a3s89-665a-43e2-9b4f-bda7d9ee148d"
          }
        } ],
        "alarm_notify" : {
          "alarm_to_user" : true,
          "topic_urn" : "urn:smn:cn-north-4:f2c2468c3ee7410c862a461ca073d2f2:test",
          "delay_time" : 60
        },
        "speed_limit" : [ {
          "begin" : "16:00",
          "end" : "15:59",
          "speed" : "10"
        } ],
        "policy_config" : {
          "ddl_trans" : false
        },
        "db_object" : {
          "object_scope" : "table",
          "target_root_db" : {
            "db_name" : "target_db_name",
            "db_encoding" : "utf8"
          },
          "object_info" : {
            "source_db1" : {
              "name" : "source_db1",
              "all" : false,
              "tables" : {
                "source_tb1" : {
                  "type" : "table",
                  "name" : "source_tb1",
                  "all" : true
                },
                "source_tb2" : {
                  "type" : "table",
                  "name" : "source_tb2",
                  "all" : true
                }
              }
            }
          }
        },
        "node_info" : {
          "spec" : {
            "node_type" : "medium"
          }
        }
      } ]
    }
  • 批量异步创建Oracle到GaussDB分布式版按需实时同步任务指定公网IP请求示例。
    https://{endpoint}/v5/054ba152d480d55b2f5dc0069e7ddef0/jobs/batch-async-create
    
    {
      "jobs" : [ {
        "base_info" : {
          "name" : "DRS-1234",
          "job_type" : "sync",
          "engine_type" : "oracle-to-gaussdbv5",
          "job_direction" : "up",
          "task_type" : "FULL_INCR_TRANS",
          "net_type" : "eip",
          "charging_mode" : "on_demand",
          "enterprise_project_id" : "0",
          "description" : "",
          "expired_days" : "14",
          "tags" : [ {
            "key" : "test",
            "value" : "test"
          } ]
        },
        "source_endpoint" : [ {
          "db_type" : "oracle",
          "endpoint_type" : "offline",
          "endpoint_role" : "so",
          "endpoint" : {
            "endpoint_name" : "oracle",
            "ip" : "******",
            "db_port" : "1521",
            "db_user" : "ORACLE_USER",
            "db_name" : "serviceName.orcl",
            "db_password" : "******"
          },
          "ssl" : {
            "ssl_link" : false
          }
        } ],
        "target_endpoint" : [ {
          "db_type" : "gaussdbv5",
          "endpoint_type" : "cloud",
          "endpoint_role" : "ta",
          "endpoint" : {
            "endpoint_name" : "cloud_gaussdbv5",
            "instance_id" : "c2c7579bc09c490b9d8009db715aeb0ain14",
            "db_user" : "root",
            "db_password" : "******"
          },
          "cloud" : {
            "region" :"cn-north-4",
            "project_id" : "9dc8c0f3f74c4dbb23c29cf0318ee561",
            "az_code" : "cn-north-4a,cn-north-4g,cn-north-4c"
          },
          "vpc" : {
            "vpc_id" : "2cb5d364-ae63-4fbb-85b7-7d59f4a88f8f",
            "subnet_id" : "2cb54324-ae63-4fbb-85b7-7d59f4a88f8f",
            "security_group_id" : "039a3s89-665a-43e2-9b4f-bda7d9ee148d"
          }
        } ],
        "alarm_notify" : {
          "alarm_to_user" : true,
          "topic_urn" : "urn:smn:cn-north-4:f2c2468c3ee7410c862a461ca073d2f2:test",
          "delay_time" : 60
        },
        "speed_limit" : [ {
          "begin" : "16:00",
          "end" : "15:59",
          "speed" : "10"
        } ],
        "policy_config" : {
          "ddl_trans" : false
        },
        "db_object" : {
          "object_scope" : "table",
          "target_root_db" : {
            "db_name" : "target_db_name",
            "db_encoding" : "utf8"
          },
          "object_info" : {
            "source_db1" : {
              "name" : "source_db1",
              "all" : false,
              "tables" : {
                "source_tb1" : {
                  "type" : "table",
                  "name" : "source_tb1",
                  "all" : true
                },
                "source_tb2" : {
                  "type" : "table",
                  "name" : "source_tb2",
                  "all" : true
                }
              }
            }
          }
        },
        "public_ip_list" : [ {
          "id" : "018d9e56-26d5-455a-97dc-e6f5f44a2cbd",
          "public_ip" : "******",
          "type" : "master"
        } ],
        "node_info" : {
          "spec" : {
            "node_type" : "medium"
          }
        }
      } ]
    }

响应示例

状态码: 202

Accepted

{
  "job" : {
    "async_job_id" : "bd4193aa-072d-4ce6-beec-adffc7252341"
  }
}

状态码: 400

Bad Request

{
  "error_code" : "DRS.10000001",
  "error_msg" : "Failed."
}

状态码

状态码

描述

202

Accepted

400

Bad Request

错误码

请参见错误码