更新时间:2024-11-19 GMT+08:00

恢复到已有实例

功能介绍

该章节介绍如何将数据库恢复到已有实例。

该接口计划于2025-03-31下线,建议及时切换到新接口恢复到已有实例

接口约束

  • 恢复SQL Server单个数据库到已有实例时,支持批量执行。
  • 该接口不支持RDS for PostgreSQL数据库实例。
  • 恢复到已有实例时,该接口存在如下约束:
    • 源实例和目标实例的数据库类型必须一致,如都是MySQL。
    • 目标实例数据库版本必须高于或等于源实例的数据库版本,如MySQL 5.7.25->5.7.27,SQL Server版本约束,详见表1
    • RDS for MySQL数据库目标实例的存储空间大于或等于源实例的存储空间总大小。
    • 不支持跨区域恢复操作。
    • 恢复RDS for MySQL数据库到已有实例时,目标实例与原实例表名大小写设置不一致,可能会导致恢复失败。
  • 恢复到当前实例时,该接口存在如下约束:

    该接口仅支持实例的数据库引擎MySQL和Microsoft SQL Server。

    表1 RDS for SQL Server恢复支持的版本规则

    原数据库版本

    可恢复到的版本

    2008 标准版

    2008 标准版

    2012 web版

    2012 web版

    2012 标准版

    2012 企业版

    2012 标准版

    2012 标准版

    2012 企业版

    2012 企业版

    2012 企业版

    2014 标准版

    2014 标准版

    2014 企业版

    2014 企业版

    2014 企业版

    2016 标准版

    2016 标准版

    2016 企业版

    2016 企业版

    2016 企业版

    2017 web版

    2017 web版

    2017 标准版

    2017 企业版

    2017 标准版

    2017 标准版

    2017 企业版

    2017 企业版

    2017 企业版

URI

  • URI格式

    POST /v3/{project_id}/instances/recovery

  • 参数说明
    表2 参数说明

    名称

    是否必选

    说明

    project_id

    租户在某一region下的project ID。

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

请求消息

参数说明
表3 参数说明

名称

是否必选

参数类型

说明

source

Object

恢复数据源对象。

详情请参见表4

target

Object

恢复目标对象。

详情请参见表5

表4 source字段数据结构说明

名称

是否必选

参数类型

说明

instance_id

String

实例ID。

type

String

表示恢复方式,枚举值:

  • “backup”,表示使用备份文件恢复,按照此方式恢复时,“type”字段为非必选,“backup_id”必选。
  • “timestamp”,表示按时间点恢复,按照此方式恢复时,“type”字段必选,“restore_time”必选。

backup_id

String

用于恢复的备份ID。当使用备份文件恢复时需要指定该参数。

restore_time

Integer

恢复数据的时间点,格式为UNIX时间戳,单位是毫秒,时区为UTC。

database_name

Map<String, String>

仅适用于SQL Server引擎,当有此参数时表示支持局部恢复和重命名恢复,恢复数据以局部恢复为主。

  • 不填写该字段时,默认恢复全部数据库。
  • 新数据库名可填写多个,用英文逗号分隔,新数据库名称中可包含原库名。
  • 新数据库名称填写限制如下:
    • 新库名不可以与原库名相同,为空时,默认恢复与原库名相同。
    • 根据创建实例时所选择的字符集判断数据库名称是否大小写敏感,保证新数据库名称之间不可以重复。
    • 所有新数据库名称数量与目标实例数据库数量总数不可以超出数据库数量配额,数据库数量配额参数名:rds_databases_quota。
    • 新数据库名不能包含rdsadmin、master、msdb、tempdb、model或resource字段(不区分大小写)。
    • 新数据库名称长度在1~64个字符之间,包含字母、数字,下划线或中划线,不能包含其他特殊字符,如恢复多个新数据库,可通过英文逗号分隔。
    • 新数据库名称与源实例数据库名称不可以冲突。
    • 新数据库名称与恢复到已有或当前的实例下的数据库名称不可以冲突。
示例:
"database_name":{"原数据库名称":"新数据库名称"}

正确示例:"database_name":{"A":"A,A1,A2","B":"B1,B2","C":""}

错误示例:"database_name":{"A":"A","B":"B1,B2","C":"B1,C1","D":"D1,d1"},

错误原因如下:

  1. 原数据库库名称不可以等于新数据库名称。
  2. 新数据库名称相互之间冲突重复,新库名的集合中B1重复。
  3. 实例数据库名大小写不敏感情况下,D1与d1数据库名称冲突。
  • 恢复当前或已有实例,恢复操作过程需要谨慎操作。
须知:

恢复前请评估恢复后的数据大小是否超出目标实例购买的磁盘大小,如果磁盘容量不足,请先扩容磁盘,避免恢复过程中由于磁盘容量限制导致恢复失败。

表5 target字段数据结构说明

名称

是否必选

参数类型

说明

instance_id

String

恢复目标实例ID。

请求示例

使用备份文件恢复:

MySQL:

https://{endpoint}/v3/0483b6b16e954cb88930a360d2c4e663/instances/recovery
{
	"source": {
		"instance_id": "d8e6ca5a624745bcb546a227aa3ae1cfin01",
		"type": "backup",
		"backup_id": "2f4ddb93-b901-4b08-93d8-1d2e472f30fe"
	},
	"target": {
		"instance_id": "d8e6ca5a624745bcb546a227aa3ae1cfin01"
	}
}

SQL Server:

{
	"source": {
		"instance_id": "61879e6085bc44d1831b0ce62d988fd9in04",
		"type": "backup",
		"backup_id": "b021670e69ba4538b7b2ed07257306aebr04",
		"database_name": {
			"db1": "dbtest1",
			"db2": ""
		}

	},
	"target": {
		"instance_id": "d8e6ca5a624745bcb546a227aa3ae1cfin04"
	}
}

按时间点恢复:

MySQL:

{
	"source": {
		"instance_id": "d8e6ca5a624745bcb546a227aa3ae1cfin01",
		"type": "timestamp",
		"restore_time": 1532001446987
	},
	"target": {
		"instance_id": "d8e6ca5a624745bcb546a227aa3ae1cfin01"
	}
}

Microsoft SQL Server:

{
	"source": {
		"instance_id": "61879e6085bc44d1831b0ce62d988fd9in04",
		"type": "timestamp",
		"restore_time": 1532001446987,
		"database_name": {
			"db1": "dbtest1,dbtest2",
			"db2": "db2,db02",
                        "db3": ""
		}
	},
	"target": {
		"instance_id": "d8e6ca5a624745bcb546a227aa3ae1cfin04"
	}
}

响应消息

  • 正常响应要素说明
    表6 要素说明

    名称

    参数类型

    说明

    job_id

    String

    本次任务的ID。

  • 正常响应样例
    {
    	"job_id": "ff80808157127d9301571bf8160c001d"
    }
  • 异常响应

    请参见异常请求结果

状态码

错误码

请参见错误码