
# 创建备份迁移任务 - CreateReplicationJob
#### 功能介绍
该接口主要用于三种常见场景下备份迁移任务的配置。
备份迁移支持如下的常见场景：
- 通过OBS桶备份文件进行全量数据迁移。
- 通过OBS桶备份文件进行全量+增量数据迁移。
- 通过RDS全量备份进行全量数据迁移。
 
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-drs/drs_api_0035.html)。
- 如果使用身份策略授权，当前API调用无需身份策略权限。
 
#### URI
POST /v5/{project_id}/backup-migration-jobs
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                |
|:---|:---|:---|:---|
| project_id | 是    | String | 租户在某一Region下的Project ID。 获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-drs/drs_api_0106.html) |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                          |
|:---|:---|:---|:---|
| Content-Type | 是    | String | 发送的实体的MIME类型。推荐用户默认使用application/json，如果API是对象、镜像上传等接口，媒体类型可按照流类型的不同进行确定。                                   |
| X-Auth-Token | 是    | String | 从IAM服务获取的用户Token。 用户Token也就是调用获取用户Token接口的响应值，该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头中包含的"X-Subject-Token"的值即为Token值。 |
| X-Language   | 否    | String | 请求语言类型。                                                                                                     |
   
表3请求Body参数 
| 参数             | 是否必选 | 参数类型                                                                               | 描述                                |
|:---|:---|:---|:---|
| base_info      | 是    | [BackupJobBaseInfo] object      | 创建备份迁移任务基本信息体。                    |
| target_db_info | 是    | [BackupJobEndpointInfo] object | 备份迁移任务恢复目标RDS for SQL Server实例信息。 |
| backup_info    | 是    | [BackupInfo] object            | 备份文件信息。                           |
| options        | 是    | [BackupRestoreOptionInfo] object | 备份迁移相关配置参数。                       |
   
 表4BackupJobBaseInfo 
| 参数                    | 是否必选 | 参数类型                                                                            | 描述                                                                                                                                                                           |
|:---|:---|:---|:---|
| name                  | 是    | String                                                                          | 任务名称。 约束：任务名称在4位到50位之间，不区分大小写，可以包含字母、数字、中划线或下划线，不能包括其他特殊字符。 - 最小长度：4 - 最大长度：50 |
| engine_type           | 是    | String                                                                          | 数据库引擎。 - sqlserver：RDS for SQL Server引擎                                                                                       |
| description           | 否    | String                                                                          | 任务描述。                                                                                                                                                                        |
| tags                  | 否    | Array of [ResourceTag] objects | 标签信息。 标签的值可以包含任意语种字母、数字、空格和_ . : / = + - @。                                                                                    |
| enterprise_project_id | 否    | String                                                                          | 企业项目ID。                                                                                                                                                                      |
   
 表5ResourceTag 
| 参数    | 是否必选 | 参数类型   | 描述                                                                                    |
|:---|:---|:---|:---|
| key   | 否    | String | 标签键。 约束：最大长度36，只能包含字母、数字、下划线、中划线和中文。 |
| value | 否    | String | 标签值。标签的值可以包含任意语种字母、数字、空格和_ . : / = + - @。                                             |
   
 表6BackupJobEndpointInfo 
| 参数                    | 是否必选 | 参数类型   | 描述                                                           |
|:---|:---|:---|:---|
| target_instance_id    | 是    | String | 备份迁移任务恢复目标RDS for SQL Server实例ID。                            |
| ms_file_stream_status | 否    | String | 目标实例是否开启FileStream模式。可通过RDS for SQL Server详情接口获取。            |
| file_id               | 否    | String | RDS for SQL Server备份文件的文件ID，通过RDS全量恢复时必填。可通过云数据库RDS备份管理页面获取。 |
   
 表7BackupInfo 
| 参数          | 是否必选 | 参数类型                                                                                 | 描述                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| file_source | 是    | String                                                                               | 备份文件来源：（全部大写） - OBS：存放在OBS中的备份文件。  - RDS：RDS实例的备份文件。   |
| bucket_name | 否    | String                                                                               | OBS桶名称，使用OBS桶备份文件恢复时必填。 约束：长度范围为3～63个字符，仅支持小写字母、数字、中划线（-）、点（.），且只能以字母或数字开头和结尾，禁止使用IP地址。 如果选择从OBS桶获取备份文件必填，登录OBS Browser客户端，首页为OBS桶列表，可以获取到备份文件所在桶的名称。                                                                                                    |
| files       | 是    | Array of [BackupFileInfo] objects | 备份文件信息列表。                                                                                                                                                                                                                                                                                                                                               |
   
 表8BackupFileInfo 
| 参数                     | 是否必选 | 参数类型   | 描述                                                                                                                           |
|:---|:---|:---|:---|
| name                   | 是    | String | 备份文件名称。                                                                                                                      |
| obs_path               | 否    | String | OBS桶中文件路径。 OBS场景：必选 RDS场景：缺省   |
| rds_version            | 否    | String | bak文件数据库版本。 OBS场景：缺省 RDS场景：必选   |
| rds_source_instance_id | 否    | String | bak文件所属实例。 OBS场景：缺省 RDS场景：必选 |
   
 表9BackupRestoreOptionInfo 
| 参数                    | 是否必选 | 参数类型                 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| is_cover              | 否    | Boolean              | 是否覆盖目标数据库，不填默认为false。 值为"true"表示覆盖。 值为"false"表示不覆盖。                                                                                                                                                                                                                                                                                                                                                                                                     |
| is_default_restore    | 否    | Boolean              | 是否默认恢复，默认恢复所有数据库。 "true"是代表默认恢复还原备份文件中的全部数据库。 "false"代表需要在db_names这个字段中指定需要恢复的数据库名。                                                                                                                                                                                                                                                                                                                                                                       |
| is_last_backup        | 是    | Boolean              | 一次典型的增量恢复过程，会涉及多次恢复增量备份。每个增量备份恢复均会使目标数据库保持还原中状态，此时数据库不可读写，直至最后一个增量备份恢复完成后，数据库才能变成可用状态。此后数据库将无法继续进行增量恢复，所以确定为最后一个备份的场景有： 一次性全量迁移，后续将不再进行增量恢复时，设置该字段值为"true"。 增量恢复流程中，确定为最后割接阶段的最后一个增量备份时，设置该字段值为"false"。                                                                                                                                                                                                                                                 |
| is_precheck           | 是    | Boolean              | 是否执行预校验。 true：执行。 false：不执行。                                                                                                                                                                                                                                                                                                                                                                                                                              |
| recovery_mode         | 是    | String               | 恢复模式： "full"表示全量迁移。 "incre"表示增量迁移 。                                                                                                                                                                                                                                                                                                                                                                                                                       |
| db_names              | 否    | Array of strings     | 数据库名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| reset_db_name_map     | 否    | Map\<String,String\> | 该字段为一个map，目前使用格式key是""，value是新数据库名字。 该功能将忽略备份文件中原有的数据库名，通过DRS将其恢复为指定的新数据库名。 使用条件： - 备份文件中只有一个数据库。  - 备份文件是全量备份类型（待恢复备份类型选择：全量备份），且是一次性恢复（最后一个备份选择：是）。   |
| is_delete_backup_file | 否    | Boolean              | 该参数控制使用OBS桶中备份文件恢复时，当任务结束时是否删除下载到RDS for SQL server磁盘中的OBS备份文件，默认删除。 - true 删除  - false 不删除                                                                                                                                                             |
   
#### 响应参数
**状态码：200**
表10响应Body参数 
| 参数     | 参数类型   | 描述    |
|:---|:---|:---|
| job_id | String | 任务ID。 |
   
**状态码：400**
表11响应Body参数 
| 参数         | 参数类型   | 描述    |
|:---|:---|:---|
| error_code | String | 错误码。  |
| error_msg  | String | 错误描述。 |
   
#### 请求示例
- 通过OBS备份文件进行全量备份恢复。
  ```
  https://{endpoint}/v5/054ba152d480d55b2f5dc0069e7ddef0/backup-migration-jobs
  {
    "base_info" : {
      "name" : "DRS-7526",
      "engine_type" : "sqlserver",
      "enterprise_project_id" : "0",
      "description" : "目标RDS实例名称：rds-sqlserver-2022-stand",
      "tags" : [ ]
    },
    "target_db_info" : {
      "target_instance_id" : "0a3182607bc549bcb46cc9a8755761a6in04",
      "ms_file_stream_status" : "off",
      "file_id" : ""
    },
    "backup_info" : {
      "file_source" : "OBS",
      "bucket_name" : "zyy-obs",
      "files" : [ {
        "name" : "1706510914000_0_Test_Database.bak",
        "obs_path" : ""
      } ]
    },
    "options" : {
      "is_cover" : true,
      "recovery_mode" : "full",
      "is_default_restore" : true,
      "is_last_backup" : true,
      "reset_db_name_map" : { },
      "is_precheck" : true,
      "is_delete_backup_file" : true,
      "db_names" : [ "" ]
    }
  }
  ```
  
- RDS备份文件备份恢复。
  ```
  https://{endpoint}/v5/054ba152d480d55b2f5dc0069e7ddef0/backup-migration-jobs
  {
    "base_info" : {
      "name" : "DRS-7526",
      "engine_type" : "sqlserver",
      "enterprise_project_id" : "0",
      "description" : "miao'shu",
      "tags" : [ ]
    },
    "target_db_info" : {
      "target_instance_id" : "0a3182607bc549bcb46cc9a8755761a6in04",
      "ms_file_stream_status" : "off",
      "file_id" : "0d87037d934848999fdc10bbabb08e6fbr04"
    },
    "backup_info" : {
      "file_source" : "RDS",
      "files" : [ {
        "name" : "",
        "obs_path" : "",
        "rds_version" : "2019_EE",
        "rds_source_instance_id" : "7fb189b57339473a929d41dabb3878a2in04"
      } ]
    },
    "options" : {
      "is_precheck" : true,
      "recovery_mode" : "",
      "is_last_backup" : "",
      "reset_db_name_map" : {
        "db_test12" : "",
        "db_hailiang_schema" : "",
        "db_sqls2v5_01" : ""
      },
      "db_names" : [ "db_test12", "db_hailiang_schema", "db_sqls2v5_01" ]
    }
  }
  ```
  
- 通过OBS桶备份文件进行全量+增量备份恢复。 首先进行一次全量迁移，is_last_backup选择"false"。
  ```
  https://{endpoint}/v5/054ba152d480d55b2f5dc0069e7ddef0/backup-migration-jobs
  {
    "base_info" : {
      "name" : "DRS-7527",
      "engine_type" : "sqlserver",
      "enterprise_project_id" : "0",
      "description" : "描述",
      "tags" : [ ]
    },
    "target_db_info" : {
      "target_instance_id" : "0a3182607bc549bcb46cc9a8755761a6in04",
      "ms_file_stream_status" : "off",
      "file_id" : ""
    },
    "backup_info" : {
      "file_source" : "OBS",
      "bucket_name" : "zyy-obs",
      "files" : [ {
        "name" : "ims.bak",
        "obs_path" : "folder/"
      } ]
    },
    "options" : {
      "is_cover" : true,
      "recovery_mode" : "full",
      "is_default_restore" : true,
      "is_last_backup" : false,
      "reset_db_name_map" : { },
      "is_precheck" : true,
      "is_delete_backup_file" : true,
      "db_names" : [ "" ]
    }
  }
  ```
  
- 通过OBS桶备份文件进行全量+增量备份恢复。 全量迁移完成后，然后进行一次增量迁移。如果不止一个增量备份文件，is_last_backup依然选择"false"。
  ```
  https://{endpoint}/v5/054ba152d480d55b2f5dc0069e7ddef0/backup-migration-jobs
  {
    "base_info" : {
      "name" : "DRS-7527",
      "engine_type" : "sqlserver",
      "enterprise_project_id" : "0",
      "description" : "描述",
      "tags" : [ ]
    },
    "target_db_info" : {
      "target_instance_id" : "0a3182607bc549bcb46cc9a8755761a6in04",
      "ms_file_stream_status" : "off",
      "file_id" : ""
    },
    "backup_info" : {
      "file_source" : "OBS",
      "bucket_name" : "zyy-obs",
      "files" : [ {
        "name" : "ims_log1.bak",
        "obs_path" : "folder/"
      } ]
    },
    "options" : {
      "is_cover" : true,
      "recovery_mode" : "incre",
      "is_default_restore" : true,
      "is_last_backup" : false,
      "reset_db_name_map" : { },
      "is_precheck" : true,
      "is_delete_backup_file" : true,
      "db_names" : [ "" ]
    }
  }
  ```
  
- 通过OBS桶备份文件进行全量+增量备份恢复。 停止数据库业务，进行最后一次增量迁移，is_last_backup选择"true"。
  ```
  https://{endpoint}/v5/054ba152d480d55b2f5dc0069e7ddef0/backup-migration-jobs
  {
    "base_info" : {
      "name" : "DRS-7527",
      "engine_type" : "sqlserver",
      "enterprise_project_id" : "0",
      "description" : "描述",
      "tags" : [ ]
    },
    "target_db_info" : {
      "target_instance_id" : "0a3182607bc549bcb46cc9a8755761a6in04",
      "ms_file_stream_status" : "off",
      "file_id" : ""
    },
    "backup_info" : {
      "file_source" : "OBS",
      "bucket_name" : "zyy-obs",
      "files" : [ {
        "name" : "ims_log2.bak",
        "obs_path" : "folder/"
      } ]
    },
    "options" : {
      "is_cover" : true,
      "recovery_mode" : "incre",
      "is_default_restore" : true,
      "is_last_backup" : true,
      "reset_db_name_map" : { },
      "is_precheck" : true,
      "is_delete_backup_file" : true,
      "db_names" : [ "" ]
    }
  }
  ```
  
 
#### 响应示例
**状态码：200**
OK
```
{
  "job_id" : "0667845a-6291-4e2a-95b0-190c0abjb703"
}
```
**状态码：400**
Bad Request
```
{
  "error_code" : "DRS.10000001",
  "error_msg" : "Failed."
}
```
#### 状态码
| 状态码 | 描述          |
|:---|:---|
| 200 | OK          |
| 400 | Bad Request |
   
其他状态请参见[状态码](https://support.huaweicloud.com/api-drs/drs_api_0108.html)。
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-drs/drs_05_0004.html)。
