创建备份导入任务 - CreateMigrationTask
功能介绍
创建备份导入任务。
调用方法
请参见如何调用API。
授权信息
账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权,具体权限要求请参见权限和授权项。
- 如果使用身份策略授权,需具备如下身份策略权限。
授权项
访问级别
资源类型(*为必须)
条件键
别名
依赖的授权项
dcs:migrationTask:create
Write
-
-
-
-
URI
POST /v2/{project_id}/migration-task
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| project_id | 是 | String | 参数解释: 项目ID。获取方法请参见获取项目ID。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
请求参数
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| task_name | 是 | String | 参数解释: 备份导入任务名称。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| description | 否 | String | 参数解释: 备份导入任务描述信息。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| migration_type | 是 | String | 参数解释: 迁移任务类型,包括备份文件导入和在线迁移两种类型。 约束限制: 不涉及。 取值范围:
默认取值: 不涉及。 |
| migration_method | 是 | String | 参数解释: 迁移方式,包括全量迁移和增量迁移两种类型。 约束限制: 备份导入场景下固定为全量迁移。 取值范围: 默认取值: 不涉及。 |
| backup_files | 否 | BackupFilesBody object | 参数解释: 迁移任务类型为备份文件导入场景时的备份文件列表。 约束限制: 备份导入场景下必填,backup_id对应的备份记录必须存在且有效。 取值范围: 不涉及。 默认取值: 不涉及。 |
| network_type | 否 | String | 参数解释: 迁移任务类型为在线迁移时,表示源Redis和目标Redis连通的网络类型,包括vpc和vpn两种类型。现已不支持用该接口创建在线迁移任务,请调用CreateOnlineMigrationTask创建在线任务。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| source_instance | 否 | SourceInstanceBody object | 参数解释: 迁移任务类型为在线迁移场景时该参数为必填参数,表示源Redis信息。现已不支持用该接口创建在线迁移任务,请调用CreateOnlineMigrationTask创建在线任务。 源Redis连接信息。备份导入场景下不使用该参数。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| target_instance | 是 | TargetInstanceBody object | 参数解释: 表示目标Redis信息。 约束限制: 必填,id必须为当前租户下已存在的DCS实例ID。 取值范围: 不涉及。 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| file_source | 是 | String | 参数解释: 备份文件来源。包含OBS桶和备份记录两种类型。 约束限制: 不涉及。 取值范围: 默认取值: 不涉及。 |
| bucket_name | 否 | String | 参数解释: OBS桶名称。 约束限制: 如果数据来源是OBS桶的话,该参数为必填参数。 取值范围: 不涉及。 默认取值: 不涉及。 |
| backup_id | 否 | String | 参数解释: 备份记录ID。 约束限制: 数据来源为备份记录时必须填写。 取值范围: 不涉及。 默认取值: 不涉及。 |
| files | 是 | Array of Files objects | 参数解释: 备份文件列表。 约束限制: 数据来源为OBS桶时必须填写。 取值范围: 不涉及。 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| file_name | 是 | String | 参数解释: 备份文件名。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| size | 否 | String | 参数解释: 文件大小(单位:Byte)。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| update_at | 否 | String | 参数解释: 文件最后修改时间(格式YYYY-MM-DD HH:MM:SS)。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| id | 否 | String | 参数解释: Redis实例ID。云服务Redis必须填写。 约束限制: 与addrs至少填一个。 取值范围: 不涉及。 默认取值: 不涉及。 |
| ip | 否 | String | 参数解释: Redis IP地址。迁移2.0版本不再使用该参数。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| port | 否 | String | 参数解释: Redis端口。迁移2.0版本不再使用该参数。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| addrs | 是 | String | 参数解释: Redis实例名称(source_instance信息中填写)。自建Redis必须填写。 约束限制: 与id至少填一个。 取值范围: 不涉及。 默认取值: 不涉及。 |
| password | 否 | String | 参数解释: Redis连接密码。 约束限制: 如果设置了密码,则必须填写。 取值范围: 不涉及。 默认取值: 不涉及。 |
| name | 否 | String | 参数解释: Redis实例名称。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| proxy_multi_db | 否 | Boolean | 参数解释: Proxy实例是否开启了多DB。只有当源Redis数据为DCS Proxy集群实例,且开启了多DB(Proxy实例multi-db参数值为yes)时需要配置为true。其他场景无需配置。 约束限制: 非多DB Proxy集群源实例如果配置该参数为开启,可能会导致任务失败。 取值范围: 默认取值: false |
| db | 否 | String | 参数解释: 数据库编号。指定DB进行迁移,例如填写5,表示只迁移DB5。不填写时迁移全部DB。 约束限制: 若非空必须为整数。 取值范围: 0~255的整数。 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| id | 是 | String | 参数解释: Redis实例ID(target_instance信息中必须填写)。云服务Redis必须填写。 约束限制: 与addrs至少填一个。 取值范围: 不涉及。 默认取值: 不涉及。 |
| ip | 否 | String | 参数解释: Redis IP地址。迁移2.0版本不再使用该参数。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| port | 否 | String | 参数解释: Redis端口。迁移2.0版本不再使用该参数。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| addrs | 否 | String | 参数解释: Redis连接地址。自建Redis必须填写。 约束限制: 与id至少填一个。 取值范围: 不涉及。 默认取值: 不涉及。 |
| password | 否 | String | 参数解释: Redis连接密码。 约束限制: 如果设置了密码,则必须填写。 取值范围: 不涉及。 默认取值: 不涉及。 |
| name | 否 | String | 参数解释: Redis实例名称(target_instance信息中填写)。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| proxy_multi_db | 否 | Boolean | 参数解释: Proxy实例是否开启了多DB。该参数无需配置。 约束限制: 不涉及。 取值范围: 默认取值: 不涉及。 |
| db | 否 | String | 参数解释: 数据库编号。指定DB进行迁移,例如填写5,表示只迁移DB5。不填写时迁移全部DB。 约束限制: 若非空必须为整数。 取值范围: 0~255的整数。 默认取值: 不涉及。 |
响应参数
状态码:200
| 参数 | 参数类型 | 描述 |
|---|---|---|
| id | String | 参数解释: 迁移任务ID。 取值范围: 不涉及。 |
| name | String | 参数解释: 迁移任务名称。 取值范围: 不涉及。 |
| status | String | 参数解释: 迁移任务状态,这个字段的值包括:SUCCESS, FAILED, MIGRATING,TERMINATED 取值范围: |
| error | String | 参数解释: 错误信息。 取值范围: 不涉及。 |
状态码:400
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_msg | String | 参数解释: 错误信息。 取值范围: 不涉及。 |
| error_code | String | 参数解释: 错误码。 取值范围: 请参见错误码。 |
| error_ext_msg | String | 参数解释: 扩展错误信息(暂未使用,赋值为null)。 取值范围: 不涉及。 |
状态码:401
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_msg | String | 参数解释: 错误信息。 取值范围: 不涉及。 |
| error_code | String | 参数解释: 错误码。 取值范围: 请参见错误码。 |
| error_ext_msg | String | 参数解释: 扩展错误信息(暂未使用,赋值为null)。 取值范围: 不涉及。 |
状态码:403
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_msg | String | 参数解释: 错误信息。 取值范围: 不涉及。 |
| error_code | String | 参数解释: 错误码。 取值范围: 请参见错误码。 |
| error_ext_msg | String | 参数解释: 扩展错误信息(暂未使用,赋值为null)。 取值范围: 不涉及。 |
状态码:404
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_msg | String | 参数解释: 错误信息。 取值范围: 不涉及。 |
| error_code | String | 参数解释: 错误码。 取值范围: 请参见错误码。 |
| error_ext_msg | String | 参数解释: 扩展错误信息(暂未使用,赋值为null)。 取值范围: 不涉及。 |
状态码:500
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_msg | String | 参数解释: 错误信息。 取值范围: 不涉及。 |
| error_code | String | 参数解释: 错误码。 取值范围: 请参见错误码。 |
| error_ext_msg | String | 参数解释: 扩展错误信息(暂未使用,赋值为null)。 取值范围: 不涉及。 |
请求示例
创建备份导入迁移任务,备份数据来源于OBS桶。
POST https://{dcs_endpoint}/v2/{project_id}/migration-task
{
"task_name" : "migration1",
"description" : "Test",
"migration_type" : "backupfile_import",
"migration_method" : "full_amount_migration",
"backup_files" : {
"bucket_name" : "bucketName",
"file_source" : "self_build_obs",
"files" : [ {
"size" : "790526976",
"file_name" : "fileName"
} ]
},
"target_instance" : {
"id" : "d2c8399f-bdba-43c1-8069-3ff17a1a79d5",
"name" : "dcs-test",
"password" : "xxxxxx"
}
} 响应示例
状态码:200
创建备份导入任务成功。
{
"id" : "8aa6999e71cb638b0171f485f5266ef0",
"name" : "dcs-test",
"status" : "MIGRATING",
"error" : ""
} SDK代码示例
SDK代码示例如下。
创建备份导入迁移任务,备份数据来源于OBS桶。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.dcs.v2.region.DcsRegion; import com.huaweicloud.sdk.dcs.v2.*; import com.huaweicloud.sdk.dcs.v2.model.*; import java.util.List; import java.util.ArrayList; public class CreateMigrationTaskSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); DcsClient client = DcsClient.newBuilder() .withCredential(auth) .withRegion(DcsRegion.valueOf("<YOUR REGION>")) .build(); CreateMigrationTaskRequest request = new CreateMigrationTaskRequest(); CreateMigrationTaskBody body = new CreateMigrationTaskBody(); TargetInstanceBody targetInstancebody = new TargetInstanceBody(); targetInstancebody.withId("d2c8399f-bdba-43c1-8069-3ff17a1a79d5") .withName("dcs-test") .withPassword("xxxxxx"); List<Files> listBackupFilesFiles = new ArrayList<>(); listBackupFilesFiles.add( new Files() .withFileName("fileName") .withSize("790526976") ); BackupFilesBody backupFilesbody = new BackupFilesBody(); backupFilesbody.withFileSource(BackupFilesBody.FileSourceEnum.fromValue("self_build_obs")) .withBucketName("bucketName") .withFiles(listBackupFilesFiles); body.withTargetInstance(targetInstancebody); body.withBackupFiles(backupFilesbody); body.withMigrationMethod(CreateMigrationTaskBody.CreateMigrationTaskBody.fromValue("full_amount_migration")); body.withMigrationType(CreateMigrationTaskBody.CreateMigrationTaskBody.fromValue("backupfile_import")); body.withDescription("Test"); body.withTaskName("migration1"); request.withBody(body); try { CreateMigrationTaskResponse response = client.createMigrationTask(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
创建备份导入迁移任务,备份数据来源于OBS桶。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | # coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkdcs.v2.region.dcs_region import DcsRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkdcs.v2 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = DcsClient.new_builder() \ .with_credentials(credentials) \ .with_region(DcsRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreateMigrationTaskRequest() targetInstancebody = TargetInstanceBody( id="d2c8399f-bdba-43c1-8069-3ff17a1a79d5", name="dcs-test", password="xxxxxx" ) listFilesBackupFiles = [ Files( file_name="fileName", size="790526976" ) ] backupFilesbody = BackupFilesBody( file_source="self_build_obs", bucket_name="bucketName", files=listFilesBackupFiles ) request.body = CreateMigrationTaskBody( target_instance=targetInstancebody, backup_files=backupFilesbody, migration_method="full_amount_migration", migration_type="backupfile_import", description="Test", task_name="migration1" ) response = client.create_migration_task(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
创建备份导入迁移任务,备份数据来源于OBS桶。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" dcs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dcs/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dcs/v2/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dcs/v2/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth, err := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). SafeBuild() if err != nil { fmt.Println(err) return } hcClient, err := dcs.DcsClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). SafeBuild() if err != nil { fmt.Println(err) return } client := dcs.NewDcsClient(hcClient) request := &model.CreateMigrationTaskRequest{} nameTargetInstance:= "dcs-test" passwordTargetInstance:= "xxxxxx" targetInstancebody := &model.TargetInstanceBody{ Id: "d2c8399f-bdba-43c1-8069-3ff17a1a79d5", Name: &nameTargetInstance, Password: &passwordTargetInstance, } sizeFiles:= "790526976" var listFilesBackupFiles = []model.Files{ { FileName: "fileName", Size: &sizeFiles, }, } fileSourceBackupFiles:= model.GetBackupFilesBodyFileSourceEnum().SELF_BUILD_OBS bucketNameBackupFiles:= "bucketName" backupFilesbody := &model.BackupFilesBody{ FileSource: &fileSourceBackupFiles, BucketName: &bucketNameBackupFiles, Files: listFilesBackupFiles, } descriptionCreateMigrationTaskBody:= "Test" request.Body = &model.CreateMigrationTaskBody{ TargetInstance: targetInstancebody, BackupFiles: backupFilesbody, MigrationMethod: model.GetCreateMigrationTaskBodyMigrationMethodEnum().FULL_AMOUNT_MIGRATION, MigrationType: model.GetCreateMigrationTaskBodyMigrationTypeEnum().BACKUPFILE_IMPORT, Description: &descriptionCreateMigrationTaskBody, TaskName: "migration1", } response, err := client.CreateMigrationTask(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
| 状态码 | 描述 |
|---|---|
| 200 | 创建备份导入任务成功。 |
| 400 | 非法请求。 |
| 401 | 认证信息非法。 |
| 403 | 请求被拒绝访问。 |
| 404 | 所请求的资源不存在。 |
| 500 | 内部服务错误。 |
错误码
请参见错误码。