亚马逊AWS官方博客

使用SQL Server原生备份与还原功能,将本地SQL Server数据库迁移至Amazon RDS on VMware

原文链接:

https://aws.amazon.com/cn/blogs/database/migrating-an-on-premises-sql-server-database-to-amazon-rds-on-vmware-using-sql-server-native-backup-and-restore/

 

 

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。

解决方案概述

我们只需完成以下三个简单步骤即可实现迁移:

  1. 对本地SQL Server数据库进行完整备份。
  2. 将数据库备份文件(*.bak)上传至VMware数据存储。
  3. 将数据库备份还原至目标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-demoiSCSI数据存储下文件夹,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用户凭证):

USE rdsadmin

GO

EXEC rds_set_configuration 'vsphere_datacenter', ‘ENV6-Datacenter’;

EXEC rds_set_configuration 'vsphere_datastore', 'iSCSI';

EXEC rds_set_configuration 'vsphere_username', 'user@vSphere.local';

EXEC rds_set_configuration 'vsphere_password', '[password]';

EXEC rds_set_configuration 'vsphere_endpoint', 'https://vcenter.env6.amazon.local';

GO

 

以下截屏,为您的输出结果。

  • 使用以下代码验证配置:

USE rdsadmin

GO

 

rds_show_configuration

GO

 

结果应包含您在存储程序rds-set_configuration中设定的值。

  • 使用以下代码运行数据库还原:

USE msdb

GO

 

EXEC rds_restore_database

@restore_db_name='AdventureWorksLT2014',

@datastore_path_to_restore_from='migration-demo/AdventureWorksLT2014.bak'

GO

 

结果将返回一条task_id,您可以用它跟踪任务进度。在以下截屏中,返回的task_id为10。

我们使用以下代码,跟踪数据库还原任务的进度:

EXEC rds_task_status @task_id = 10

GO

 

在还原完成之后,您应看到类似于以下截屏的结果,其中% complete列显示为100,而lifecycle列显示为SUCCESS。结果还应显示出还原数据库所耗费的总时长。在本示例中,AdventureWorksLT2014数据库的还原操作耗费了2分钟。

在某些情况下,您也可以取消当前正在进行的任务。当任务执行过程中,lifecycle列将显示INPROGRESS值。例如,在任务进行期间,您可以运行以下脚本以取消上一项还原任务:

USE msdb

GO

 

EXEC rds_cancel_task @task_id = 10

GO

 

在还原任务完成之后,您可以将应用程序指向运行在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

 

 

本篇作者

Wanda He

Amazon Web Services公司高级数据库专业解决方案架构师。她与客户一道在AWS上设计、部署并优化各类关系数据库。