亚马逊AWS官方博客
使用SQL Server原生备份与还原功能,将本地SQL Server数据库迁移至Amazon RDS on VMware
原文链接:
Amazon RDS on VMware支持在本地VMware环境下为用户提供托管SQL Server数据库服务。SQL Server的管理工作向来以复杂与耗时著称,但RDS on VMware足可以帮助大家在VMware vSphere集群上轻松的配置、扩展并运营SQL Server。您可以将原有的本地SQL Sever数据库迁移至RDS on VMware上,借此发挥托管服务的固有优势。
在将SQL Server数据库迁移至RDS on VMware时,您可以选择多种具体迁移方法。其一是使用SQL Server的原生导入与导出向导程序,将数据由本地SQL Server复制到RDS on VMware所管理的目标SQL Server内。使用这一选项,您可以分别迁移元数据与其他数据。另一种方法是使用SQL Server原生备份与还原功能迁移整个本地数据库。本文将向大家介绍如何使用VMware数据存储实现SQL Server备份与还原,借此将本地SQL Server数据库迁移至RDS on VMware。
解决方案概述
我们只需完成以下三个简单步骤即可实现迁移:
- 对本地SQL Server数据库进行完整备份。
- 将数据库备份文件(*.bak)上传至VMware数据存储。
- 将数据库备份还原至目标RDS for SQL Server。
先决条件
在开始之前,请确保您的VMware vSphere环境已经在RDS on VMware上正常运行,同时满足以下要求:
- VMware vSphere v6.5或更高的Enterprise Plus版本。
- 可用的AWS账户。
- 运行在RDS on VMware上的vSphere集群。关于具体操作说明,请参阅开始使用Amazon RDS on VMware。
- VMware vSphere用户账户。
- 作为迁移源的SQL Server虚拟机。
- 安装有SQL Server客户端工具的虚拟机。在本文中,我们使用mssql-cli作为客户端工具。您也可以使用SQL Server Management Studio (SSMS)或者其他您熟悉的SQL Server客户端工具。
数据库迁移
要将本地SQL Server数据库迁移至RDS on VMware,请完成以下操作步骤:
- 停止指向源数据库的应用程序连接,或者将数据库设为只读。
- 对数据库执行完整备份。
- 通过SQL Server虚拟机启动vSphere客户端。
- 将数据库备份文件上传至数据存储。
以下截屏中的iSCSI
为我们的数据存储,migration-demo
为iSCSI
数据存储下文件夹,AdventureWorksLT2014.bak
则为完整备份文件的名称。
现在接下来,您可以将数据库备份还原至目标RDS for SQL Server。
- 接入目标RDS for SQL Server。
在本文中,我们使用mssql-cli访问RDS for SQL Server。当然,您也可以使用SSMS或者您所熟悉的其他客户端工具。
为了让Amazon RDS能够通过VMware数据存储实现数据库备份还原,大家需要使用rds_set_configuration
存储过程程序以设置还原流程中的vSphere环境信息。具体请使用以下参数:
配置参数 | 值 |
vsphere_datacenter |
vSphere集群部署所在的vSphere数据中心名称。 |
vsphere_datastore |
数据库备份文件存储所在的数据存储名称。 |
vsphere_username |
vSphere用户名称。用户需要有权限从vSphere端点处下载*.bak文件。例如,<vsphere_endpoint>/folder/ <filepath>?dcPath =<datacenter>&dsName =<datastore>。 |
vsphere_password |
vSphere用户的密码。 |
vsphere_endpoint |
vSphere端点(前缀应为HTTP或HTTPS)。 |
- 使用以下脚本,将RDS for SQL Server配置为从VMware数据存储处启用原生还原功能(请将其中的用户名与密码部分替换为您的vSphere用户凭证):
|
- 使用以下代码验证配置:
|
结果应包含您在存储程序rds-set_configuration
中设定的值。
- 使用以下代码运行数据库还原:
|
结果将返回一条task_id
,您可以用它跟踪任务进度。在以下截屏中,返回的task_id
为10。
我们使用以下代码,跟踪数据库还原任务的进度:
|
在还原完成之后,您应看到类似于以下截屏的结果,其中% complete
列显示为100
,而lifecycle
列显示为SUCCESS
。结果还应显示出还原数据库所耗费的总时长。在本示例中,AdventureWorksLT2014
数据库的还原操作耗费了2分钟。
在某些情况下,您也可以取消当前正在进行的任务。当任务执行过程中,lifecycle
列将显示INPROGRESS
值。例如,在任务进行期间,您可以运行以下脚本以取消上一项还原任务:
|
在还原任务完成之后,您可以将应用程序指向运行在vSphere上的RDS for SQL Server,并开始针对RDS for SQL Server实例上的数据库运行查询(详见以下截屏)。
局限性
当然,这项功能也有自己的局限性。截至本文撰稿时,相关局限包括:
- 仅支持对完整数据库备份进行还原。
- 不支持从多个文件备份进行还原。
- 不支持将RDS for SQL Server备份至VMware数据存储。
- RDS on VMware目前仅支持SQL Server 2016 SP2 Enterprise Edition。因此,还原功能只支持从相同或更早的SQL Server版本处获取到的备份文件。
总结
本文介绍了如何使用SQL Server原生备份及还原功能,并配合VMware数据存储将本地SQL Server数据库迁移至RDS on VMware。
关于RDS on VMware的更多详细信息,请参阅Amazon RDS on VMware。