本文档包含以下内容:
- SQL Server连接RDS实例
- 本地sqlserver迁移至RDS
- SQL Server之利用物理备份文件恢复到自建数据库
- SQL Server实例的一般限制
1.SQL Server连接RDS实例
对于数据库类型为SQL Server的用户,可以使用Microsoft SQL Server Management Studio连接RDS实例。 点击“连接”,在弹出的“连接到服务器”对话框“服务器名称”中输入RDS实例内/外网地址和端口号,在“登录名”和“密码”中分别输入数据库账号和密码,点击“连接”即可。如图所示:
2.本地sqlserver迁移至RDS
使用DTS(https://dts.aliyun.com)可以轻松得将本地的sqlserver迁移到RDS sqlserver。目前能够支持的本地sqlserver的版本为2005、2008、2008r2、2012。
迁移类型简介
-
结构迁移
DTS会将迁移对象的结构定义迁移到目标实例。目前DTS支持结构迁移的对象有:表、视图、表触发器、同义词、SQL存储过程、SQL函数、plan guid、自定义类型、rule、default -
全量迁移
DTS会将源数据库迁移对象在的数据全部迁移到目标实例。如果在迁移过程中有增量更新的话,这些增量不会被迁移到目标库。所以建议在业务无写入时,使用DTS进行全量数据迁移。
迁移限制
- 迁移过程中,不支持DDL操作
- 结构迁移不支持assemblies、库级存储过程、service broker、全文索引、全文目录、分布式schema、分布式函数、CLR标量函数、CLR标值函数、内部表、聚合函数、系统 的迁移
- 如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败
迁移权限要求
当使用DTS进行sqlserver迁移时,在不同迁移类型情况下,源跟目标数据库的迁移帐号权限要求如下:
迁移类型 | 结构迁移 | 全量迁移 |
---|---|---|
本地sqlserver实例 | select | select |
目的RDS实例 | 读写权限 | 读写权限 |
迁移步骤
下面详细介绍下用户如何使用DTS将本地的sqlserver迁移到RDS上的流程
RDS实例数据库创建
在正式迁移之前,需要确认目标RDS实例中是否已经创建好了需要迁入的数据库,如果没有创建的话,需要在RDS控制台中,先创建迁入数据库。
迁移帐号创建
在正式迁移之前,需要先在本地sqlserver数据库及云上RDS实例中创建迁移帐号,并将要迁移的库表的读写权限授权给上面创建的帐号。 可以使用grant语法给本地sqlserver的迁移帐号授权,具体需要授权的权限可以参考上面的迁移权限要求
对于目标RDS实例,需要在RDS控制台中创建帐号,并将迁入库的读写权限授权给这个帐号。
正式迁移
当上面的所有前提条件都配置完成后,就可以开始正式的数据迁移了。下面详细介绍下具体的迁移步骤。
1)进入DTS控制台,点击创建迁移任务,正式开始任务创建
2) 填写本地MySQL跟目标RDS实例的连接信息
这里面源实例类型要选择有公网IP的自建数据库,且数据源类型需要选择SQLServer
3)选择迁移对象及迁移类型
默认情况下,迁移对象迁移到目标库后,对象名跟源库一致。如果用户想修改对象在目标库上的名字时,可以直接修改已选择的对象名。
当点击编辑后,即进入对象名称修改页面:
修改了对象名后,目标实例的对象名即为修改后的对象名。
4)启动预检查
在数据正式迁移之前,会先进行基础预检查,只有预检查通过后,才能启动迁移
如果预检查失败,那么可以查看具体的失败详情,根据失败原因修复后,重新进行预检查
当点击查看后,可以查看到具体的预检查失败原因:
当修复完成后,可以在任务列表中,选择这个任务,然后重新启动预检查
5)启动迁移任务
当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看具体的迁移状态及进度
至此,完成将本地sqlserver数据库迁移到RDS的数据迁移工作。
3.SQL Server之利用物理备份文件恢复到自建数据库
操作步骤
1) 登陆RDS管理控制台,找到对应实例并下载备份文件,下载时请注意“备份类型”列所显示的是“全量”还是“增量”。如下图所示:
2) 点击“下载”链接会弹出“文件下载”对话框,点击“复制下载地址”按钮获取下载地址后,可以使用浏览器或者下载工具进行下载,如下图所示:
3) 下载完成后,找到需要的数据库备份并解压
备份文件的命名规则是数据库名+备份类型+日期时间+任务号.bak,其中备份类型datafull代表全备、datadiff代表差异备份、log代表日志备份。 以数据库rdsumu2myfzbeai1为例,全备份文件见下图:
差异和日志备份文件见下图:
通过上面的步骤只需要拿到数据库rdsumu2myfzbeai1的全备文件和差异备份即可,因为RDS暂时不支持本地恢复到某时间点所以日志备份不需要使用。
需要使用的文件如图所示:
4) 确定备份文件的物理路径、目标数据库(要恢复的数据库)的存放路径
以rdsumu2myfzbeai1数据库为例,假设备份文件存放的路径为:
全备:d:\backup\rdsumu2myfzbeai1_datafull_201402250050_2250050.bak
差异备份:d:\backup\rdsumu2myfzbeai1_datadiff_201402260050_2260050.bak
目标数据库的存放路径:
数据地址:d:\database\rdsumu2myfzbeai1\data
日志地址:d:\database\rdsumu2myfzbeai1\log
5) 查看数据库的文件逻辑名(以下步骤在本地SQL Server控制台执行)
代码如下:
restore filelistonly from disk='d:\backup\rdsumu2myfzbeai1_datafull_201402250050_2250050.bak'
go
如图6中的红框为数据文件和日志文件的逻辑名:
6) 恢复全备
根据自己实际获取的逻辑名、备份存放路径、数据文件和日志文件路径来修改下面的脚本(这里我们以rdsumu2myfzbeai1数据库现有情况为例)
代码如下:
restore database rdsumu2myfzbeai1 from disk='d:\backup\rdsumu2myfzbeai1_datafull_201402250050_2250050.bak' with replace,norecovery,stats=10,
move 'data1' to 'd:\database\rdsumu2myfzbeai1\data\data1.mdf',
move 'log' to 'd:\database\rdsumu2myfzbeai1\log\log.ldf'
go
执行完成后,数据库rdsumu2myfzbeai1会处于正在还原状态。如下图所示:
如果只需恢复全备,请直接执行下面的代码,即可完成全备恢复。如果还需要恢复差异备,请直接跳到下一步恢复差异备份,不要执行下面的代码。
代码如下:
restore database rdsumu2myfzbeai1 with recovery
7) 恢复差异备份
(同上修改脚本相应参数,这里以rdsumu2myfzbeai1数据库现有情况为例)
代码如下:
restore database rdsumu2myfzbeai1 from disk='D:\backup\rdsumu2myfzbeai1_datadiff_201402260050_2260050.bak' with replace,norecovery,stats=10,
move 'data1' to 'd:\database\rdsumu2myfzbeai1\data\data1.mdf',
move 'log' to 'd:\database\rdsumu2myfzbeai1\log\log.ldf'
go
执行完成后,数据库rdsumu2myfzbeai1会处于正在还原状态。如下图所示:
然后再执行如下代码:
restore database rdsumu2myfzbeai1 with recovery
go
执行完后,数据库恢复成可用状态,即完成全备+差异备的恢复。如下图所示:
4.SQL Server实例的一般限制
- 单个实例数据库个数限制为50个,数据库账号限制为500个。
- 不提供在命令行创建数据库和账号的权限,无grant权限。
- 出于安全考虑,某些SQL Server功能不能够使用, 如:分布式事务、Windows域账号登陆、邮件功能、BI分析功能、报表功能、数据库级 别的DDL触发器(触发器中含有修改表结构、创建表、增删索引等DDL语句)、程序集、Service Broker、SQL Server Profiler、复制功能、策略管理、代理启动停止功能等。
SQL Server 许可
目前,RDS for SQL Server 只提供附带许可实例,即实例创建后即具有微SQL Server企业版软许可授权,不提供用户自带许可。