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

创建备份迁移任务

功能介绍

该接口主要用于三种常见场景下备份迁移任务的配置。

备份迁移支持如下的常见场景:

  • 通过OBS桶备份文件进行全量数据迁移。
  • 通过OBS桶备份文件进行全量+增量数据迁移。
  • 通过RDS全量备份进行全量数据迁移。

URI

POST /v5/{project_id}/backup-migration-jobs

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

租户在某一Region下的Project ID。

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

请求参数

表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

备份迁移相关配置参数。

表4 BackupJobBaseInfo

参数

是否必选

参数类型

描述

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。

表5 ResourceTag

参数

是否必选

参数类型

描述

key

String

标签键。

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

value

String

标签值。标签的值可以包含任意语种字母、数字、空格和_ . : / = + - @。

表6 BackupJobEndpointInfo

参数

是否必选

参数类型

描述

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备份管理页面获取。

表7 BackupInfo

参数

是否必选

参数类型

描述

file_source

String

备份文件来源:(全部大写)

  • OBS:存放在OBS中的备份文件。
  • RDS:RDS实例的备份文件。

bucket_name

String

OBS桶名称,使用OBS桶备份文件恢复时必填。

约束:长度范围为3~63个字符,仅支持小写字母、数字、中划线(-)、点(.),且只能以字母或数字开头和结尾,禁止使用IP地址。

如果选择从OBS桶获取备份文件必填,参考登录客户端登录OBS Browser客户端,首页为OBS桶列表,可以获取到备份文件所在桶的名称。

files

Array of BackupFileInfo objects

备份文件信息列表。

表8 BackupFileInfo

参数

是否必选

参数类型

描述

name

String

备份文件名称。

obs_path

String

OBS桶中文件路径。

OBS场景:必选

RDS场景:缺省

rds_version

String

bak文件数据库版本。

OBS场景:缺省

RDS场景:必选

rds_source_instance_id

String

bak文件所属实例。

OBS场景:缺省

RDS场景:必选

表9 BackupRestoreOptionInfo

参数

是否必选

参数类型

描述

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" : "floder/"
        } ]
      },
      "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" : "floder/"
        } ]
      },
      "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" : "floder/"
        } ]
      },
      "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

错误码

请参见错误码