暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

拿来吧你!本地SQL Server数据库迁移大法

362


Amazon RDS on VMware支持在本地VMware环境下为用户提供托管SQL Server数据库服务。SQL Server的管理工作向来以复杂与耗时著称,但Amazon RDS on VMware足可以帮助大家在VMware vSphere集群上轻松的配置、扩展并运营SQL Server。您可以将原有的本地SQL Sever数据库迁移至Amazon RDS on VMware上,借此发挥托管服务的固有优势。


  • Amazon RDS on VMware

    https://aws.amazon.com/cn/rds/vmware/


在将SQL Server数据库迁移至Amazon RDS on VMware时,您可以选择多种具体迁移方法。其一是使用SQL Server的原生导入与导出向导程序,将数据由本地SQL Server复制到Amazon RDS on VMware所管理的目标SQL Server内。使用这一选项,您可以分别迁移元数据与其他数据。另一种方法是使用SQL Server原生备份与还原功能迁移整个本地数据库。本文将向大家介绍如何使用VMware数据存储实现SQL Server备份与还原,借此将本地SQL Server数据库迁移至Amazon RDS on VMware


📢  想要了解更多亚马逊云科技最新技术发布和实践创新,敬请关注2021亚马逊云科技中国峰会!点击图片报名吧~更多精彩内容,敬请期待8.19-20北京9.15深圳分会吧!



解决方案概述



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


  1. 对本地SQL Server数据库进行完整备份


  2. 将数据库备份文件(*.bak)上传至VMware数据存储。


  3. 将数据库备份还原至目标Amazon RDS for SQL Server。

下图所示,为这套解决方案的基本架构。




先决条件



在开始之前,请确保您的VMware vSphere环境已经在Amazon RDS on VMware上正常运行,同时满足以下要求:


1.VMware vSphere v6.5或更高的Enterprise Plus版本。


2.可用的Amazon账户。


3.运行在Amazon RDS on VMware上的vSphere集群。关于具体操作说明,请参阅开始使用Amazon RDS on VMware。


  • 开始使用Amazon RDS on VMware

    https://aws.amazon.com/cn/rds/vmware/getting-started/


4.VMware vSphere用户账户。


5.作为迁移源的SQL Server虚拟机。


6.安装有SQL Server客户端工具的虚拟机。在本文中,我们使用mssql-cli作为客户端工具。您也可以使用SQL Server Management Studio (SSMS)或者其他您熟悉的SQL Server客户端工具。



数据库迁移



要将本地SQL Server数据库迁移至Amazon RDS on VMware,请完成以下操作步骤:


  • 停止指向源数据库的应用程序连接,或者将数据库设为只读。

  • 对数据库执行完整备份。

  • 通过SQL Server虚拟机启动vSphere客户端。

  • 将数据库备份文件上传至数据存储。


以下截屏中的iSCSI为我们的数据存储,migration-demoiSCSI数据存储下文件夹,AdventureWorksLT2014.bak则为完整备份文件的名称。



现在接下来,您可以将数据库备份还原至目标Amazon RDS for SQL Server。


  • 接入目标Amazon RDS for SQL Server。


在本文中,我们使用mssql-cli访问Amazon RDS for SQL Server。当然,您也可以使用SSMS或者您所熟悉的其他客户端工具。



为了让Amazon RDS能够通过VMware数据存储实现数据库备份还原,大家需要使用rds_set_configuration存储过程程序以设置还原流程中的vSphere环境信息。具体请使用以下参数:


配置参数 


vsphere_datacenter    

vSphere集群部署所在的vSphere数据中心名称。


vsphere_datastore    

数据库备份文件存储所在的数据存储名称。vSphere用户名称。用户需要有权限从vSphere端点处下载*.bak文件。例如,<vsphere_endpoint>/folder/ 


vsphere_username    

<filepath>?dcPath=<datacenter>&dsName=<datastore>


vsphere_password    

vSphere用户的密码。  


vsphere_endpoint  

vSphere端点(前缀应为HTTP或HTTPS)。 


  • 使用以下脚本,将Amazon RDS for SQL Server配置为从VMware数据存储处启用原生还原功能(请将其中的用户名与密码部分替换为您的vSphere用户凭证):


 1USE rdsadmin
2
3GO
4
5EXEC rds_set_configuration 'vsphere_datacenter', ‘ENV6-Datacenter’;
6
7EXEC rds_set_configuration 'vsphere_datastore''iSCSI';
8
9EXEC rds_set_configuration 'vsphere_username''user@vSphere.local';
10
11EXEC rds_set_configuration 'vsphere_password''[password]';
12
13EXEC rds_set_configuration 'vsphere_endpoint''https://vcenter.env6.amazon.local';
14
15GO


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



使用以下代码验证配置:


1USE rdsadmin
2
3GO
4
5
6
7rds_show_configuration
8
9GO


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



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

 1USE msdb
2
3GO
4
5
6
7EXEC rds_restore_database
8
9@restore_db_name='AdventureWorksLT2014',
10
11@datastore_path_to_restore_from='migration-demo/AdventureWorksLT2014.bak'
12
13GO
14GO


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



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


1EXEC rds_task_status @task_id = 10
2
3GO


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



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


1USE msdb
2
3GO
4
5
6
7EXEC rds_cancel_task @task_id = 10
8
9GO


在还原任务完成之后,您可以将应用程序指向运行在vSphere上的Amazon RDS for SQL Server,并开始针对Amazon RDS for SQL Server实例上的数据库运行查询(详见以下截屏)。




局限性



当然,这项功能也有自己的局限性。截至本文撰稿时,相关局限包括:


  • 仅支持对完整数据库备份进行还原。

  • 不支持从多个文件备份进行还原。


  • 不支持将Amazon RDS for SQL Server备份至VMware数据存储。Amazon RDS on VMware目前仅支持SQL Server 2016 SP2 Enterprise Edition。因此,还原功能只支持从相同或更早的SQL Server版本处获取到的备份文件。



总结



本文介绍了如何使用SQL Server原生备份及还原功能,并配合VMware数据存储将本地SQL Server数据库迁移至Amazon RDS on VMware。


关于Amazon RDS on VMware的更多详细信息,请参阅Amazon RDS on VMware


  • Amazon RDS on VMware

    https://aws.amazon.com/cn/rds/vmware/


本篇作者


Wanda He

亚马逊云科技高级数据库专业

解决方案架构师

她与客户一道在亚马逊云科技上设计、部署并优化各类关系数据库。


听说,点完下面4个按钮

就不会碰到bug了!


文章转载自亚马逊云开发者,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论