Updated on 2024-07-11 GMT+08:00

Creating a Task

Function

This API is used to create a single task. You can create a real-time migration, synchronization, or DR task based on different request parameters.

Constraints

  • This API is available only for synchronization from MySQL to MySQL, migration from Redis to GeminiDB Redis, migration from cluster Redis to GeminiDB Redis, and synchronization from Oracle to GaussDB Distributed.
  • This API can be used only in certain regions. For details, see Endpoints.

URI

POST /v5/{project_id}/jobs

Table 1 Path parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID of a tenant in a region.

For details about how to obtain the project ID, see Obtaining a Project ID.

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

Content-Type

Yes

String

MIME type of the request body. Use the default value application/json. For APIs used to upload objects or images, the value varies depending on the flow type.

The default value is application/json.

X-Auth-Token

Yes

String

User token obtained from IAM.

It is a response to the API for obtaining a user token. This API is the only one that does not require authentication.

After a request is processed, the value of X-Subject-Token in the header is the token value.

X-Language

No

String

Request language type.

Default value: en-us

Enumerated values:

  • en-us
  • zh-cn
Table 3 Request body parameters

Parameter

Mandatory

Type

Description

job

Yes

Object

Request body for creating a task.

For details, see Table 4.

Table 4 Data structure description of field job

Parameter

Mandatory

Type

Description

base_info

Yes

Object

Basic information body for creating a task.

For details, see Table 5.

source_endpoint

Yes

Array of objects

Database information body for creating a task.

For details, see Table 7.

target_endpoint

Yes

Array of objects

Database information body for creating a task.

For details, see Table 7.

period_order

No

Object

Yearly/Monthly information body.

For details, see Table 14.

node_info

Yes

Object

Information body of the DRS instance.

For details, see Table 15.

public_ip_list

No

Array of objects

Information about a specified EIP.

For details, see Table 19.

Table 5 Data structure description of field base_info

Parameter

Mandatory

Type

Description

name

No

String

Task name. The task name can be 4 to 50 characters in length. It is case-insensitive and can contain only letters, digits, hyphens (-), and underscores (_).

  • Minimum length: 4
  • Maximum length: 50

job_type

No

String

Task scenario. Values:

  • migration: real-time migration.
  • sync: real-time synchronization.
  • cloudDataGuard: real-time disaster recovery.

Enumerated values:

  • migration
  • sync
  • cloudDataGuard

multi_write

No

Boolean

Whether the DR type is dual-active. Note:

  • This parameter is mandatory when job_type is set to cloudDataGuard. If the DR type is dual-active, the value of multi_write is true. Otherwise, the value is false.
  • If job_type is set to other values, multi_write is optional.

engine_type

No

String

Engine type. Values:

  • oracle-to-gaussdbv5: Synchronization from Oracle to GaussDB distributed.
  • redis-to-gaussredis: Migration from Redis to GeminiDB Redis.
  • rediscluster-to-gaussredis: Migration from cluster Redis to GeminiDB Redis.

Enumerated values:

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

job_direction

No

String

Migration direction. Values:

  • up: to-the-cloud scenarios and DR scenarios where the current cloud is the standby.
  • down: out-of-cloud scenarios and DR scenarios where the current cloud is the active.
  • non-dbs: self-built databases.

Enumerated values:

  • up
  • down
  • non-dbs

task_type

No

String

Migration type. Values:

  • FULL_TRANS: full migration.
  • FULL_INCR_TRANS: full+incremental migration.
  • INCR_TRANS: incremental migration.

Enumerated values:

  • FULL_TRANS
  • FULL_INCR_TRANS
  • INCR_TRANS

net_type

No

String

Network type. Values:

  • eip: public network.
  • vpc: VPC network. The VPC network cannot be selected in DR scenarios.
  • vpn: VPN or Direct Connect.

Enumerated values:

  • eip
  • vpc
  • vpn

charging_mode

No

String

Billing mode. The pay-per-use billing is used by default. Values:

  • period: indicates the yearly/monthly billing.
  • on_demand: indicates the pay-per-use billing.

Enumerated values:

  • period
  • on_demand

enterprise_project_id

No

String

Enterprise project ID. The default value is 0, indicating the default enterprise project.

Default value: 0

description

No

String

Task description. The task description can contain a maximum of 256 characters and cannot contain the following special characters: !<>'&"\

Minimum length: 0

Maximum length: 256

start_time

No

String

Scheduled start time of a task.

expired_days

No

String

Number of days after which an abnormal task automatically stops. The unit is day. The value ranges from 14 to 100. If this parameter is not specified, the default value is 14.

Default value: 14

tags

No

Array of objects

Tag information. Up to 20 tags can be added.

For details, see Table 6.

is_open_fast_clean

No

Boolean

Specifies whether to enable binlog clearing for RDS for MySQL or RDS for MariaDB. If this parameter is not transferred, the default value false is used, indicating that quick binlog clearing is disabled.

Table 6 Data structure description of field tags

Parameter

Mandatory

Type

Description

key

No

String

Tag key. The value can contain a maximum of 36 characters, including letters, digits, underscores (_), and hyphens (-).

Minimum length: 1

Maximum length: 36

value

No

String

Tag value. The value can contain a maximum of 43 characters, including letters, digits, underscores (_), and hyphens (-).

Minimum length: 1

Maximum length: 43

Table 7 Data structure description of fields source_endpoint and target_endpoint

Parameter

Mandatory

Type

Description

db_type

Yes

String

Database type. Values:

  • oracle: Oracle.
  • gaussdbv5: GaussDB distributed.
  • redis: Redis.
  • rediscluster: Cluster Redis.
  • gaussredis: GeminiDB Redis.

Enumerated values:

  • oracle
  • gaussdbv5
  • redis
  • rediscluster
  • gaussredis

endpoint_type

Yes

String

DB instance type. Values:

  • offline: indicates an on-premises database.
  • ecs: indicates a database built on Huawei Cloud ECSs.
  • cloud: indicates a Huawei cloud database.

Enumerated values:

  • offline
  • ecs
  • cloud

endpoint_role

Yes

String

DB instance role. Values:

  • so: indicates the source database.
  • ta: indicates the destination database.

Enumerated values:

  • so
  • ta

endpoint

Yes

Object

Basic information body of the database.

For details, see Table 8.

cloud

No

Object

Region and project where a DB instance is located.

For details, see Table 9.

vpc

No

Object

Information about the VPC, subnet, and security group where a DB instance resides. This parameter is mandatory when the DB instance type is ECS.

For details, see Table 10.

config

No

Object

Basic information body of database settings.

For details, see Table 11.

ssl

No

Object

Information body of the database SSL certificate.

For details, see Table 12.

customized_dns

No

Object

Custom DNS server.

For details, see Table 13.

Table 8 Data structure description of fields endpoint and source_sharding

Parameter

Mandatory

Type

Description

id

No

String

Database information ID.

endpoint_name

Yes

String

Database scenario type. Values:

  • oracle: indicates the on-premises Oracle database.
  • ecs_oracle: indicates the Oracle database built on Huawei Cloud ECSs.
  • cloud_gaussdbv5: indicates the Huawei Cloud distributed GaussDB database.
  • mysql: indicates the MySQL database built on other clouds or on-premises MySQL database.
  • ecs_mysql: indicates the MySQL database built on Huawei Cloud ECSs.
  • cloud_mysql: indicates the Huawei Cloud RDS for MySQL database.
  • redis: On-premises Redis database.
  • ecs_redis: Redis database built on Huawei Cloud ECSs.
  • rediscluster: On-premises cluster Redis database.
  • ecs_rediscluster: Cluster Redis database built on Huawei Cloud ECSs.
  • cloud_gaussdb_redis: Huawei Cloud GeminiDB Redis.

Enumerated values:

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

ip

No

String

Database IP address. Note:

  • If an on-premises MongoDB database is used, use colons (:) to separate the database IP address and port number, and use commas (,) to separate multiple values. A maximum of three IP addresses or domain names can be entered.
  • If a DDS instance is used, use colons (:) to separate the database IP address and port number, and use commas (,) to separate multiple values.
  • If the database is a cluster Redis database, enter the IP addresses and port numbers of all shards in the source cluster Redis database. Use colons (:) to separate a database IP address and port number. Use commas (,) to separate multiple values. You are advised to enter the IP address of the slave node of a cluster shard. Up to 32 IP addresses or domain names can be entered. Use commas (,) to separate multiple IP addresses or domain names.

Example:

  • 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
  • Cluster Redis: 192.168.0.1:8080,192.168.0.2:8080

db_port

No

String

Database port.

The value is an integer ranging from 1 to 65535.

db_user

Yes

String

Database username.

db_password

Yes

String

Database password.

instance_id

No

String

ID of a Huawei Cloud DB instance.

instance_name

No

String

Name of a Huawei Cloud DB instance.

db_name

No

String

Database name. Example:

  • oracle: serviceName.orcl.

source_sharding

No

Array of objects

Information about the physical source database.

For details, see Table 8.

Table 9 Data structure description of field cloud

Parameter

Mandatory

Type

Description

region

Yes

String

Region ID. This parameter is mandatory when DB Instance Type is set to ecs (database built on Huawei Cloud ECSs) or cloud (Huawei cloud database). For details, see Regions and Endpoints. Note: If there are subprojects in a region, the region ID is a combination of the regional project ID and subproject ID, which are combined using an underscore (_).

project_id

Yes

String

Project ID of a tenant in a region.

For details about how to obtain the project ID, see Obtaining a Project ID.

az_code

No

String

Name of the AZ where the database is located.

Table 10 Data structure description of field vpc

Parameter

Mandatory

Type

Description

vpc_id

Yes

String

ID of the VPC where a DB instance is located. To obtain the ID, perform the following steps:

Method 1: Log in to the VPC console and view the VPC ID on the VPC details page.

Method 2: Call the API for querying VPCs. For details, see Querying VPCs.

subnet_id

Yes

String

ID of the subnet where a DB instance is located. To obtain the ID, perform the following steps:

Method 1: Log in to the VPC console and click the target subnet on the Subnets page to view the network ID on the displayed page.

Method 2: Call the API for querying subnets. For details, see Querying Subnets.

security_group_id

No

String

ID of the security group where a DB instance is located. To obtain the ID, perform the following steps:

Method 1: Log in to the VPC console. Choose Access Control > Security Groups in the navigation pane on the left. On the displayed page, click the target security group. You can view the security group ID on the displayed page.

Method 2: Call the API for querying security groups. For details, see Querying Security Groups.

Table 11 Data structure description of field config

Parameter

Mandatory

Type

Description

is_target_readonly

No

Boolean

Whether the destination DB instance is set to read-only.

This parameter is available only when job_direction is set to up during MySQL migration and DR. In the DR scenario, this parameter is mandatory and set to true if the current cloud is the standby in single-active DR. If this parameter is not specified, the default value is true.

Default value: true

node_num

No

Integer

Number of subtasks connected to the source cluster Redis instance for data migration from cluster Redis to GeminiDB Redis. The value ranges from 1 to 16 and cannot be greater than the number of shards in the source cluster Redis instance. Set this parameter based on the scale of the source cluster Redis instance. You are advised to set one subtask to connect to four shards in the source cluster Redis instance.

Minimum value: 1

Maximum value: 16

Default value: 0

Table 12 Data structure description of field ssl

Parameter

Mandatory

Type

Description

ssl_link

No

Boolean

Whether SSL is enabled. If SSL is enabled, the value of this parameter is true.

ssl_cert_name

No

String

SSL certificate name.

ssl_cert_key

No

String

SSL certificate content, which is encrypted using Base64.

ssl_cert_check_sum

No

String

The checksum value of the SSL certificate, which is used for backend verification. This parameter is mandatory for secure connection to the source database.

ssl_cert_password

No

String

SSL certificate password. This parameter is mandatory if the certificate file name extension is .p12.

Table 13 Data structure description of field customized_dns

Parameter

Mandatory

Type

Description

is_set_dns

Yes

Boolean

Specifies whether to set your own DNS server.

set_dns_action

Yes

String

Behavior of setting your own DNS server.

  • add: Add a customized DNS server IP address.
  • keep: Retain the DNS server IP address.
  • update: Update the customized DNS server IP address. (The update takes effect when the DNS server IP address changes.)
  • recover: Restore the default DNS server IP address. (Restoration may cause domain name resolution failures. Exercise caution when performing this operation.)

Enumerated values:

  • add
  • keep
  • update
  • recover

dns_ip

Yes

String

DNS server IP address.

Minimum length: 0

Maximum length: 15

Table 14 Data structure description of field period_order

Parameter

Mandatory

Type

Description

period_type

Yes

Integer

Subscription period type. Values:

  • 2: indicates that the service is subscribed by month.
  • 3: indicates that the service is subscribed by year.

Default value: 3

Enumerated values:

  • 2
  • 3

period_num

Yes

Integer

Number of subscription periods. This parameter depends on the value of period_type. For example:

  • When period_type is set to 2, the value 1 indicates one month.
  • When period_type is set to 3, the value 1 indicates one year.

is_auto_renew

No

Integer

Whether auto renewal is enabled. Values:

  • 0: indicates that auto renewal is disabled. This is the default value. You need to pay manually.
  • 1: indicates that auto renewal is enabled.

Default value: 0

Enumerated values:

  • 0
  • 1
Table 15 Data structure description of field node_info

Parameter

Mandatory

Type

Description

spec

Yes

Object

Information body of DRS instance specifications.

For details, see Table 16.

vpc

No

Object

Information body of DRS instance VPC. This parameter is mandatory for self-built databases.

For details, see Table 17.

base_info

No

Object

Information body of DRS instance VPC. This parameter is mandatory for self-built databases.

For details, see Table 18.

Table 16 Data structure description of field spec

Parameter

Mandatory

Type

Description

node_type

Yes

String

Specification code. Values:

  • micro: minimum specifications.
  • small: small specifications.
  • medium: medium specifications.
  • high: large specifications.

Enumerated values:

  • micro
  • small
  • medium
  • high
Table 17 Data structure description of field vpc

Parameter

Mandatory

Type

Description

vpc_id

Yes

String

ID of the VPC where the DRS instance is located.

subnet_id

Yes

String

ID of the subnet where the DRS instance is located.

custom_node_ip

No

String

IP address of the DRS instance to be created. Use commas (,) to separate multiple values. Only IPv4 addresses are supported. To obtain the IP address, perform the following steps:

  • Method 1: Log in to the VPC console and click the target subnet on the Subnets page. View the subnet CIDR block and select an IP address that is not in use.
  • Method 2: Call the API for querying private IP addresses. For details, see "Querying Private IP Addresses". Select a private IP address whose device_owner is left blank. Example: 192.168.0.10,192.168.0.11

security_group_id

No

String

ID of the security group where the DRS instance is located.

Table 18 Data structure description of field base_info

Parameter

Mandatory

Type

Description

instance_type

Yes

String

DB instance type. The value can be:

  • single: single instance.
  • ha: primary/standby instance.

Enumerated values:

  • single
  • ha

arch

Yes

String

CPU architecture. The value can be:

  • x86
  • arm

Enumerated values:

  • x86
  • arm

availability_zone

Yes

String

AZ ID. If the task instance is not a single instance, you need to specify an AZ for each node of the instance and separate the AZs with commas (,).

status

No

String

Status.

role

No

String

Primary/Standby role of a task.

Table 19 Data structure description of field public_ip_list

Parameter

Mandatory

Type

Description

id

Yes

String

ID of a specified EIP.

public_ip

Yes

String

EIP.

type

Yes

String

Type of a task with an EIP bound.

  • In a primary/standby task, master indicates the primary task, and slave indicates the standby task.
  • In other cases, the value is fixed to master.

Enumerated values:

  • master
  • slave

Response Parameters

Status code: 200

Table 20 Response body parameters

Parameter

Type

Description

job

Object

Response body for creating a task.

For details, see Table 21.

Table 21 Data structure description of field job

Parameter

Type

Description

id

String

Task ID.

name

String

Task name.

status

String

Task status.

create_time

String

Task creation time.

is_clone_job

String

Indicates whether a task is a clone task.

Status code: 400

Table 22 Response body parameters

Parameter

Type

Description

error_code

String

Error code.

Minimum length: 12

Maximum length: 12

error_msg

String

Error message.

Minimum length: 1

Maximum length: 512

Example Request

  • Creating a pay-per-use synchronization task from Oracle to GaussDB distributed, in which task_type is set to FULL_INCR_TRANS and net_type is set to eip
    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"
          }
        }
      }
    }
  • Creating a pay-per-use real-time synchronization task from Oracle to GaussDB Distributed and specifying an EIP
    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"
          }
        ]
      }
    }

Example Response

Status code: 200

OK

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

Status code: 400

Bad Request

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

Status Code

Status Code

Description

200

OK

400

Bad Request

Error Code

For details, see Error Code.