更新时间:2024-12-16 GMT+08:00

创建任务

功能介绍

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

接口约束

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

URI

POST /v5/{project_id}/jobs

表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

枚举值:

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

参数

是否必选

参数类型

描述

job

Object

创建单个任务请求体。

详情请参见表4

表4 job字段数据结构说明

参数

是否必选

参数类型

描述

base_info

Object

创建任务基本信息体。

详情请参见表5

source_endpoint

Array of objects

创建任务数据库信息体。

详情请参见表7

target_endpoint

Array of objects

创建任务数据库信息体。

详情请参见表7

period_order

Object

包年/包月信息体。

详情请参见表14

node_info

Object

创建任务实例信息体。

详情请参见表15

public_ip_list

Array of objects

指定公网IP的信息。

详情请参见表19

表5 base_info字段数据结构说明

参数

是否必选

参数类型

描述

name

String

任务名称。 约束:任务名称在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,子网,安全组等信息,数据库实例类型为ECS时必填。

详情请参见表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 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
表15 node_info字段数据结构说明

参数

是否必选

参数类型

描述

spec

Object

任务实例规格信息体。

详情请参见表16

vpc

Object

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

详情请参见表17

base_info

Object

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

详情请参见表18

表16 spec字段数据结构说明

参数

是否必选

参数类型

描述

node_type

String

实例规格编码。取值:

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

枚举值:

  • micro
  • small
  • medium
  • high
表17 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。

表18 base_info字段数据结构说明

参数

是否必选

参数类型

描述

instance_type

String

实例类型。取值:

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

枚举值:

  • single
  • ha

arch

String

CPU架构。取值:

  • x86
  • arm

枚举值:

  • x86
  • arm

availability_zone

String

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

status

String

状态。

role

String

任务主备角色。

表19 public_ip_list字段数据结构说明

参数

是否必选

参数类型

描述

id

String

指定公网IP的ID。

public_ip

String

指定公网IP。

type

String

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

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

枚举值:

  • master
  • slave

响应参数

状态码: 200

表20 响应Body参数

参数

参数类型

描述

id

String

任务ID。

name

String

任务名称。

status

String

任务状态。

create_time

String

任务创建时间。

is_clone_job

String

是否为克隆任务。

状态码: 400

表21 响应Body参数

参数

参数类型

描述

error_code

String

错误码。

最小长度:12

最大长度:12

error_msg

String

错误描述。

最小长度:1

最大长度:512

请求示例

  • 创建Oracle到GaussDB分布式版按需实时同步任务,任务模式为全量+增量,公网网络类型。
    https://{endpoint}/v5/054ba152d480d55b2f5dc0069e7ddef0/jobs
    
    {
      "job" : {
        "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-4c,cn-north-4g"
          },
          "vpc" : {
            "vpc_id" : "2cb5d364-ae63-4fbb-85b7-7d59f4a88f8f",
            "subnet_id" : "2cb54324-ae63-4fbb-85b7-7d59f4a88f8f",
            "security_group_id" : "039a3s89-665a-43e2-9b4f-bda7d9ee148d"
          }
        } ],
        "node_info" : {
          "spec" : {
            "node_type" : "medium"
          },
          "vpc" : {
            "vpc_id" : "2cb5d364-ae63-4fbb-85b7-7d59f4a88f8f",
            "subnet_id" : "2cb54324-ae63-4fbb-85b7-7d59f4a88f8f"
          }
        }
      }
    }
  • 创建Oracle到GaussDB分布式版按需实时同步任务,指定公网IP。
    https://{endpoint}/v5/054ba152d480d55b2f5dc0069e7ddef0/jobs
    
    {
      "job": {
        "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-4c,cn-north-4g"
            },
            "vpc": {
              "vpc_id": "2cb5d364-ae63-4fbb-85b7-7d59f4a88f8f",
              "subnet_id": "2cb54324-ae63-4fbb-85b7-7d59f4a88f8f",
              "security_group_id": "039a3s89-665a-43e2-9b4f-bda7d9ee148d"
            }
          }
        ],
        "node_info": {
          "spec": {
            "node_type": "medium"
          },
          "vpc": {
            "vpc_id": "2cb5d364-ae63-4fbb-85b7-7d59f4a88f8f",
            "subnet_id": "2cb54324-ae63-4fbb-85b7-7d59f4a88f8f"
          }
        },
        "public_ip_list": [
          {
            "id": "018d9e56-26d5-455a-97dc-e6f5f44a2cbd",
            "public_ip": "******",
            "type": "master"
          }
        ]
      }
    }

响应示例

状态码: 200

OK

{
    "id" : "c7debc9c-8e09-4a5d-8dd6-cc44f78jb20r",
    "name" : "DRS-1234",
    "status" : "CREATING",
    "create_time" : "2022-11-07T16:15:18Z",
    "is_clone_job": "false"
}

状态码: 400

Bad Request

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

状态码

状态码

描述

200

OK

400

Bad Request

错误码

请参见错误码