一、阿里云RDS SQL Server介绍
阿里云关系型数据库RDS(Relational Database Service)支持SQL Server引擎,RDS SQL Server拥有微软正版的License授权。
实例类型
按照实例类型分类,RDS实例可分为两种类型:
1、标准实例
常见的数据库实例类型,使用已配置的固定资源,计算与存储分离。计费方式分为包年包月与按量收费。

标准实例分为3种系列:基础、高可用、集群。实例安全性从低到高顺序排列:基础<高可用<集群。
- 基础系列:仅提供单节点数据库实例。
- 高可用系列:双节点,数据灾备使用SQL Server数据库镜像方案,备机作为数据备份与故障切换使用,不提供数据读取服务。
- 集群系列:采用一主一备的高可用架构,基于SQL Server原生AlwaysOn技术,支持在主实例中添加1~7个只读实例来实现读写分离,可满足大量的数据库读取需求。
不同系列实例架构图:


管理界面中实例区分方法:若实例类型为“常规实例”,且实例计费的方式中显示为“包年包月”或者”按量付费“,则表示该实例为标准实例。

2、Serverless实例
RDS SQL Server Serverless实例能够在业务峰谷时对计算能力进行快速且独立的自动伸缩,做到快速响应业务变化的同时,合理优化使用成本,进一步助力企业降本增效。
- 优势:
创建即为高可用形态,适用于拥有典型波峰波谷的业务场景。
规格随业务需求量随时调整,总体浪费的资源很少,提升了资源利用率,降低了资源使用量。
打破固定资源付费的模式,做到真正负载与资源动态匹配的按量付费,可节省大量成本。
- 限制:
暂不支持修改时区与字符集、接入自建域、设置透明数据加密TDE、设置SSL加密、云盘加密、升级实例大版本、升级实例内核小版本功能。
暂不支持创建只读实例。
Serverless实例架构图:

管理界面中实例区分方法:若实例计费的方式中显示为“Serverless”,则表示该实例为Serverless实例。

二、RDS SQL Server实例之间数据库迁移方案
1、数据传输服务工具
数据传输服务DTS(Data Transmission Service)是阿里云提供的实时数据流服务,支持关系型数据库(RDBMS)、非关系型的数据库(NoSQL)、数据多维分析(OLAP)等数据源间的数据交互,集数据同步、迁移、订阅、集成、加工于一体。
数据传输服务架构图

数据迁移的工作原理

- 优点:
简单易用,根据界面向导进行配置,选择需迁移数据或对象,能够很快完成SQL Server实例之间的数据迁移工作。
数据源无需作变更,支持实例间数据在线热迁移,同时支持迁移完成后续数据的实时变更同步。
- 限制:
不支持迁移加密对象。
不支持迁移CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY和GEOGRAPHY类型的数据。
- 特别注意:
目标库中不能拥有同名对象,否则DTS工具创建对象时会报错。
单次迁移任务仅支持迁移至多1000张表,大于部分需要拆分多次迁移。
- 迁移适用场景:
数据库对象数量相对较少,数据结构相对简单,对数据一致性要求较高的数据库迁移。
使用步骤:
在阿里云界面中选择数据传输服务

界面出现后,选择数据迁移页签并点击创建任务按钮

配置源数据库与目标数据库地址,均选择SQL Server,选择实例所在区域并填写上用户名密码

在配置任务对象中,勾选3种迁移类型,保证数据的实时迁移。在增量迁移类型中,建议选择第二项,可最大程度降低增量迁移对源库的侵入性,对源表有主键要求

在下方选取需要迁移的数据库

经过迁移预校验之后,DTS工具正式进入迁移流程,耐心等待其完成,并可以随时在任务管理中查看迁移过程

2、标准实例数据库备份还原功能
RDS SQL Server拥有数据库实例的备份数据,可以将备份数据快速恢复到已有实例或新实例上,用于数据迁移、误操作后恢复以及分析历史数据等。
- 优点:
简单快捷,仅需选择实例与数据库,即可完成数据还原迁移,流程较数据传输工具更为简洁。
数据迁移的同时,可将数据状态设置为数据库备份集支持的任意时间点,便于数据回溯。
- 限制:
目标实例与源实例,需要有相同的数据备份类型,若不相同,则无法使用备份还原功能进行跨实例数据迁移
目标实例与源实例,实例类型仅支持同规格到同规格、通用规格到独享规格、独享规格到通用规格,不支持共享型规格。
Serverless实例的数据库还原功能,仅支持将数据库还原至新建实例上,无法还原至已有实例。
- 特别注意:
标准实例类型与Serverless实例之间,同样不支持跨实例之间直接进行数据备份还原。
恢复后的数据库名不能与目标实例中已有的数据库名相同,否则会直接还原报错,而并不会覆盖原有库。
- 迁移适用场景:
跨实例之间的数据库快速热迁移,同时对数据一致性要求相对不高。
备份数据库
RDS SQL Server实例,根据备份策略页签中设定的备份计划,在数据备份页签中进行自动数据库备份。
点击备份设置的编辑按钮,可对备份计划以及备份方式进行修改。

备份方式分为2种:
- 快照备份:使用微软的VSS卷影复制服务,在云盘上对数据的快照进行定期备份,利用快照的特性可以快速地还原数据到某个时间点,从而恢复数据。快照备份文件不可被下载。
- 物理备份:备份为实体备份文件,支持全量物理备份和增量物理备份,暂不支持逻辑备份。支持单库备份。物理备份文件可被下载。

注意:RDS标准实例同时支持快照备份与物理备份,ServerLess实例仅支持物理备份,仅物理备份可支持备份文件下载。
还原数据库
点击RDS控制台界面上的备份恢复菜单,选择数据库恢复按钮,如截图

在弹出的选择框中,选择恢复到全新或者已有实例

选择数据库与还原时间点,选择新购实例,或者已有实例ID,截图为还原到已有其他标准实例

最后点击确定,等待还原完成。
3、跨实例通用数据迁移流程
若RDS SQL Server数据库中拥有大大超过1000以上的对象,或者是大量加密对象,DTS工具无法进行完整迁移。
同时又需要将数据库从标准实例,迁移至Serverless实例上,标准实例数据库备份还原功能也无法使用,在这种情况下,怎样才能实现数据库完整迁移?
跨实例通用数据迁移流程,将RDS实例物理备份的数据库备份文件,人为移动至OSS存储对象中,然后利用阿里云推出的“OSS备份数据恢复上云”功能,将数据库备份文件,还原至指定实例中。
迁移流程图:

- 优点:
可自定义任意实例类型进行数据库迁移,无需区分标准实例还是Serverless
没有DTS迁移对象限制,以及标准实例数据库备份还原功能的实例类型限制,保证数据库迁移完整性。
可进行增量日志还原。
- 限制:
无。
- 特别注意:
源库数据库备份类型,必须为物理备份。
OSS备份数据恢复上云功能使用的OSS对象存储,必须为标准类型。
恢复后的数据库名不能与目标实例中已有的数据库名相同,否则会直接还原报错,而并不会覆盖原有库。
- 迁移适用场景:
拥有复杂数据库对象且跨不同实例类型之间的数据库迁移,同时对数据一致性要求相对不高。
- 使用步骤:
源库进行一次物理备份,并下载数据库备份文件

将下载到的数据库备份文件,通过阿里的OSS上传工具,使用命令上传至指定OSS标准存储桶中

在目标实例中,点击备份恢复菜单中的OSS备份数据恢复上云按钮

在弹出的数据库导入界面中,输入数据库名,选择OSS存储中已经上传完毕的数据库备份文件,再选择上云方案后,点击确定

等待数据库还原完成。
三、注意事项
使用方案二与方案三进行数据库还原,目标实例数据库双版本,必须等于或者高于源实例。
举例:
源实例数据库(SQL Server 2014 标准版)可还原至目标实例(SQL Server 2016 标准版/企业版)
源实例数据库(SQL Server 2016 标准版)不可还原至目标实例(SQL Server 2014 标准版/企业版)
源实例数据库(SQL Server 2016 标准版)不可还原至目标实例(SQL Server 2017 Web版)


