本文档介绍如何通过全量备份文件将自建SQL Server数据库的多个库或所有库全量迁移至阿里云RDS SQL Server。
前提条件
- RDS SQL Server集群系列(2017企业版、2019企业版)
- RDS SQL Server高可用系列(2008 R2、2012标准版、2012企业版、2014标准版、2014企业版、2016标准版、2016企业版、2017标准版、2019标准版)
- RDS SQL Server基础系列(2012企业基础版、2012Web版、2016Web版)
背景信息
RDS SQL Server为您提供了三种基于OSS的数据库上云方案:
- 全量备份数据上云(SQL Server 2008 R2)
- 全量备份数据上云(SQL Server 2012、2014、2016、2017和2019)
- 增量备份数据上云(SQL Server 2012、2014、2016、2017和2019)
以上三种数据库上云方案迁移的级别为数据库,即每次只能完成一个数据库迁移上云。如果SQL Server实例需要迁移的数据库数量较多,上述迁移方案将不再适用。
为解决多个数据库迁移上云问题,RDS SQL Server推出了实例级别的数据库迁移上云方案,您只需将SQL Server实例中所有数据库的完整备份文件上传到OSS Bucket(存储空间)的同一文件夹中,然后执行迁移上云脚本即可。
注意事项
- 本方案仅支持全量迁移上云,暂不支持增量迁移上云。
- 如果需要使用子账号执行迁移上云,请为子账号授予OSS和RDS的读写权限(即AliyunOSSFullAccess和AliyunRDSFullAccess权限)。关于授权的操作方法,请参见为RAM用户授权。
视频演示
准备工作
将数据库迁移至RDS
常见错误
错误提示 | 原因 | 解决方法 |
---|---|---|
HTTP Status: 404 Error:InvalidAccessKeyId.NotFound Specified access key is not found. RequestID: XXXXXXXXXXXXXXXXX |
调用OpenAPI时使用的AccessKey ID不正确。 | 传入正确的AccessKey ID和AccessKey Secret,查看方法请参见访问密钥常见问题。 |
HTTP Status: 400 Error:IncompleteSignature The request signature does not conform to Aliyun standards. server string to sign is:...... |
调用OpenAPI时使用的AccessKey Secret不正确。 | |
RDS engine doesn't support, this is only for RDS SQL Server engine. |
本方案仅支持RDS SQL Server,不支持其他引擎。 | 将RDS SQL Server作为迁移的目标实例。 |
Couldn't find specify RDS [XXX]. |
RDS实例ID不存在。 | 检查传入的RDS实例ID是否正确。 |
{'status': -2, 'request-id': '', 'details': "RequestError: HTTPConnectionPool(host='xxxxxxxxxxxxxxxxx', port=80): Max retries exceeded with url: /?bucketInfo= (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x10e996490>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',))"} |
Endpoint错误,导致连接失败。 | 检查传入的Endpoint是否正确,获取方法请参见存储空间概览。 |
{'status': 404,'-id': 'xxxxxxxxx', 'details': {'HostId': 'xxxxxxxxx', 'Message': 'The specified bucket does not exist.', 'Code': 'NoSuchBucket', 'RequestId': 'xxxxxxxx', 'BucketName': 'aaaatp-test-on-ecs'}} |
OSS Bucket(存储空间)不存在。 | 检查传入的OSS Bucket是否正确。 |
There is no backup file on OSS Bucket [xxxxxx] under [xxxxxxxxx] folder, check please. |
OSS Bucket中对应的文件夹不存在或文件夹中没有满足条件的数据库备份文件。 | 检查OSS Bucket中文件夹是否存在,同时检查该文件夹中是否存在满足条件的数据库备份文件。 |
Warning!!!!!, [autotest_2005_ent_broken_full_dbcc_failed.bak] is not backup file, filtered. |
备份文件的名称不符合规范。 | 如果您不使用备份脚本来执行备份,备份文件必须按照数据库名称_备份类型_备份时间.bak 的格式来命名,例如Testdb_FULL_20180518153544.bak 。 |
HTTP Status: 403 Error:Forbidden.RAM The user is not authorized to operate the specified resource, or this operation does not support RAM. RequestID: xxxxx{'status': 403, 'request-id': 'xxxx', 'details': {'HostId': 'atp-test-on-ecs.oss-cn-beijing.aliyuncs.com', 'Message': 'The bucket you visit is not belong to you.', 'Code': 'AccessDenied', 'RequestId': 'xxxx'}} |
子账号权限不足。 | 需要为子账号授予OSS和RDS的读写权限(即AliyunOSSFullAccess和AliyunRDSFullAccess权限)。关于授权操作方法,请参见为RAM用户授权。 |
OPENAPI Response Error !!!!! : HTTP Status: <Http Status Code> Error:<Error> <Description>. RequestID: 32BB6886-775E-4BB7-A054-635664**** |
调用OpenAPI返回了错误信息。 | 根据错误码和错误信息来分析具体原因,详情请参见表 2。 |
HTTP Status Code | Error | Description | 说明 |
---|---|---|---|
403 | InvalidDBName | The specified database name is not allowed. | 非法的数据库名字,不允许使用系统数据库名。 |
403 | IncorrectDBInstanceState | Current DB instance state does not support this operation. | RDS实例状态不正确。例如,实例状态为创建中。 |
400 | IncorrectDBInstanceType | Current DB instance type does not support this operation. | 不支持的引擎,该功能仅支持RDS SQL Server。 |
400 | IncorrectDBInstanceLockMode | Current DB instance lock mode does not support this operation. | 数据库锁定状态不正确。 |
400 | InvalidDBName.NotFound | Specified one or more DB name does not exist or DB status does not support. | 数据库不存在。
|
400 | IncorrectDBType | Current DB type does not support this operation. | 数据库类型不支持该操作。 |
400 | IncorrectDBState | Current DB state does not support this operation. | 数据库状态不正确,例如,数据库在创建中或者正在上云任务中。 |
400 | UploadLimitExceeded | UploadTimesQuotaExceeded: Exceeding the daily upload times of this DB. | 上云次数超过限制,每个实例每个库每天不超过20次上云操作。 |
400 | ConcurrentTaskExceeded | Concurrent task exceeding the allowed amount. | 上云次数超过限制,每个实例每天上云总次数不超过500次。 |
400 | IncorrectFileExtension | The file extension does not support. | 备份文件的后缀名错误。 |
400 | InvalidOssUrl | Specified oss url is not valid. | 提供的OSS下载链接地址不可用。 |
400 | BakFileSizeExceeded | Exceeding the allowed bak file size. | 数据库备份文件超过限制,最大不超过3TB。 |
400 | FileSizeExceeded | Exceeding the allowed file size of DB instance. | 还原备份文件后将超过当前实例的存储空间。 |
相关API
API | 描述 |
---|---|
创建上云任务 | 创建数据上云任务 |
创建打开数据库任务 | 打开数据库 |
查询上云任务列表 | 查询数据上云任务列表 |
查询上云任务文件 | 查看数据上云任务文件详情 |