本指南介绍如何基于你的要求,通过各种工具和技术来将用户数据库从 SQL Server 迁移到 Azure 虚拟机上的 SQL Server 实例。
在继续操作之前,请完成迁移前步骤。
迁移
完成预迁移阶段的步骤后,即可迁移用户数据库和组件。 通过使用首选的迁移方法迁移数据库。
以下部分提供了按优先级顺序执行迁移的选项:
- 备份和还原
- 拆离和从 URL 附加
- 转换为 VM、上传到 URL 并部署为新的 VM
- 日志传送
- 运送硬盘驱动器
- 使用 SSMS 中的 SQL Server 迁移组件进行迁移,停机时间最短
- 迁移用户数据库外部的对象
拆离和从 URL 附加
拆离数据库和日志文件,并将其传输到 Azure Blob 存储。 然后在 Azure VM 上从 URL 附加数据库。 如果希望物理数据库文件驻留在 Blob 存储中,可使用此方法,这可能对非常大的数据库很有用。 使用此手动方法按照下列常规步骤迁移用户数据库:
- 从本地数据库实例拆离数据库文件。
- 使用 AZCopy 命令行实用程序将分离的数据库文件复制到 Azure Blob 存储。
- 从 Azure URL 将数据库文件附加到 Azure VM 中的 SQL Server 实例。
备份和还原
使用备份和还原执行标准迁移:
根据你的要求,建立与 Azure 虚拟机上的 SQL Server 的连接。 有关详细信息,请参阅连接到 Azure 上的 SQL Server 虚拟机。
暂停或停止那些使用要迁移的数据库的任何应用程序。
使用单用户模式确保用户数据库处于非活动状态。
执行到本地位置的完整数据库备份。
使用远程桌面、Azure 数据资源管理器或 AzCopy 命令行实用程序将本地备份文件复制到 VM。 (建议使用大于 2-TB 的备份。)
将完整的数据库备份还原到 Azure 虚拟机上的 SQL Server。
转换为 VM、上传到 URL 并部署为新的 VM
使用此方法可将本地 SQL Server 实例中的所有系统数据库和用户数据库迁移到 Azure 虚拟机。 请使用此手动方法并按照下列常规步骤迁移整个 SQL Server 实例:
- 将物理机或虚拟机转换为 Hyper-V VHD。
- 使用 Add-AzureVHD cmdlet 将 VHD 文件上传到 Azure 存储。
- 使用上传的 VHD 部署新的虚拟机。
注意
若要迁移整个应用程序,请考虑使用 Azure Site Recovery。
日志传送
日志传送会将事务日志文件从本地复制到 Azure VM 上的 SQL Server 实例中。 此选项可在故障转移期间最大程度地缩短故障时间,并且配置开销低于设置 Always On 可用性组。
有关详细信息,请参阅日志传送表和存储过程。
运送硬盘驱动器
在通过网络上传成本过高或不可行时,可以使用 Windows 导入/导出服务方法将大量文件数据传输到 Azure Blob 存储中。 借助此服务,可以将包含这些数据的一个或多个硬盘驱动器运送到 Azure 数据中心,在那里,数据将上传到存储帐户中。
在 SQL Server Management Studio 中使用 SQL Server 迁移组件进行迁移(最短停机时间)
SQL Server Management Studio(SSMS)中的迁移组件检查从较低版本的 SQL Server 到更高版本的 SQL Server、在本地和其他虚拟机(VM)环境中运行的升级和兼容性问题。
迁移组件查找与重大更改、行为更改、弃用的功能和其他信息相关的兼容性问题。
- 如果想要从一个跨平台数据库迁移到另一个跨平台数据库,该报表还提供功能对等性检查。
- 升级顾问评估报告提供对象影响、可能原因及修正步骤。
有关详细信息,请参阅 在 SQL Server Management Studio 中使用 SQL Server 迁移组件。
迁移用户数据库外部的对象
要在迁移后无缝操作用户数据库,可能还需要更多 SQL Server 对象。
下表提供了可在迁移用户数据库之前或之后完成的一系列组件和建议的迁移方法。
| 功能 | 组件 | 迁移方法 |
|---|---|---|
| 数据库 | 型号 | 使用 SQL Server Management Studio 编写脚本。 |
tempdb 数据库 |
计划将 tempdb 移动到 Azure VM 临时磁盘 (SSD) 以获得最佳性能。 请确保选择具有足够的本地 SSD 的 VM 大小来容纳 tempdb。 |
|
| 使用 FILESTREAM 的用户数据库 | 使用备份和还原方法进行迁移。 SQL Server Management Studio 中的 SQL Server 迁移组件不支持具有 FILESTREAM 的数据库。 | |
| 安全性 | SQL Server 和 Windows 登录名 | 使用 SQL Server Management Studio 中的 SQL Server 迁移组件 迁移用户登录名。 |
| SQL Server 角色 | 使用 SQL Server Management Studio 编写脚本。 | |
| 加密提供程序 | 建议改用 Azure Key Vault。 此过程使用 SQL IaaS 代理扩展。 | |
| 服务器对象 | 备份设备 | 通过 Azure 备份用数据库备份进行替换,或将备份写入 Azure 存储(SQL Server 2012 SP1 CU2 及更高版本)。 此过程使用 SQL IaaS 代理扩展。 |
| 链接的服务器 | 使用 SQL Server Management Studio 编写脚本。 | |
| 服务器触发器 | 使用 SQL Server Management Studio 编写脚本。 | |
| 复制 | 本地发布 | 使用 SQL Server Management Studio 编写脚本。 |
| 本地订阅服务器 | 使用 SQL Server Management Studio 编写脚本。 | |
| PolyBase | PolyBase | 使用 SQL Server Management Studio 编写脚本。 |
| 管理 | 数据库邮件 | 使用 SQL Server Management Studio 编写脚本。 |
| SQL Server 代理 | 作业 | 使用 SQL Server Management Studio 编写脚本。 |
| 警报 | 使用 SQL Server Management Studio 编写脚本。 | |
| 运算符 | 使用 SQL Server Management Studio 编写脚本。 | |
| 代理 | 使用 SQL Server Management Studio 编写脚本。 | |
| 操作系统 | 文件存储、文件共享 | 记下 SQL Server 使用的任何其他文件或文件共享并在 Azure 虚拟机目标上对其进行复制。 |
迁移后
成功完成迁移阶段后,需要完成一系列的迁移后任务,确保一切都能尽量顺畅高效地正常进行。
修正应用程序
将数据迁移到目标环境后,以前使用源的所有应用程序都需要开始使用目标。 在某些情况下,需要对应用程序进行更改才能完成此任务。
将 SQL Server 迁移组件建议的任何修补程序应用于用户数据库。 需要编写这些修补程序的脚本,以确保一致性和允许自动化。
执行测试
数据库迁移的测试方法包括以下活动:
开发验证测试:要测试数据库迁移,需要使用 SQL 查询。 创建对源数据库和目标数据库都运行的验证查询。 验证查询应涵盖已定义的范围。
设置测试环境:测试环境应包含源数据库和目标数据库的副本。 请确保隔离测试环境。
运行验证测试:针对源和目标运行验证测试,然后分析结果。
运行性能测试:针对源和目标运行性能测试,然后分析并比较结果。
优化
迁移后阶段对于协调所有数据准确性问题、验证完整性以及解决工作负载可能的性能问题至关重要。
有关这些问题的详细信息和用于缓解这些问题的步骤,请参阅: