迁移指南:SQL Server 到 Azure 虚拟机上的 SQL Server
本指南介绍如何基于你的要求,通过各种工具和技术来将用户数据库从 SQL Server 迁移到 Azure 虚拟机上的 SQL Server 实例。
在继续之前完成迁移前的步骤。
Migrate
完成预迁移阶段的步骤后,即可迁移用户数据库和组件。 通过使用首选的迁移方法迁移数据库。
以下部分提供了按优先级顺序执行迁移的选项:
- 使用适用于 Azure Data Studio 的 Azure SQL 迁移扩展进行迁移(停机时间最短)
- 备份和还原
- 拆离和从 URL 附加
- 转换为 VM、上传到 URL 并部署为新的 VM
- 日志传送
- 运送硬盘
- 迁移用户数据库外部的对象
使用适用于 Azure Data Studio 的 Azure SQL 迁移扩展进行迁移(停机时间最短)
若要使用 Azure Data Studio 执行停机时间最短的迁移,请按照以下概要步骤操作。 有关详细分步教程,请参阅教程:使用 DMS 将 SQL Server 迁移到 Azure 虚拟机上的 SQL Server:
- 下载并安装 Azure Data Studio 和 Azure SQL 迁移扩展。
- 在 Azure Data Studio 的扩展中启动“迁移到 Azure SQL”向导。
- 选择数据库进行评估,并查看迁移就绪性或问题(如果有)。 此外,收集性能数据并获取适当大小的 Azure 建议。
- 从订阅中选择 Azure 帐户和 Azure 计算机上的目标 SQL Server。
- 选择数据库备份的位置。 数据库备份可以位于本地网络共享或 Azure Blob 存储容器中。
- 使用 Azure Data Studio 中的向导创建新的 Azure 数据库迁移服务。 如果之前使用 Azure Data Studio 创建了 Azure 数据库迁移服务,则可以根据需要重复使用该服务。
- 可选:如果备份在本地网络共享上,请在可以连接到源 SQL Server 的计算机上包含备份文件的位置中下载并安装自承载集成运行时。
- 在 Azure Data Studio 中启动数据库迁移并监视进度。 也可以在 Azure 门户中的 Azure 数据库迁移服务资源下监视进度。
- 完成直接转换。
- 停止传入源数据库的所有事务。
- 更改应用程序配置,使之指向 Azure 虚拟机上 SQL Server 中的目标数据库。
- 在指定的备份位置中,为源数据库执行任何结尾日志备份。
- 确保所有数据库备份在监视详细信息页中都显示为“还原”状态。
- 在监视详细信息页中选择“完成直接转换”。
备份和还原
使用备份和还原执行标准迁移:
- 根据你的要求,建立与 Azure 虚拟机上的 SQL Server 的连接。 有关详细信息,请参阅连接到 Azure 上的 SQL Server 虚拟机。
- 暂停或停止那些使用要迁移的数据库的任何应用程序。
- 使用单用户模式确保用户数据库处于非活动状态。
- 执行到本地位置的完整数据库备份。
- 使用远程桌面、Azure 数据资源管理器或 AzCopy 命令行实用程序将本地备份文件复制到 VM。 (建议使用大于 2-TB 的备份。)
- 将完整的数据库备份还原到 Azure 虚拟机上的 SQL Server。
拆离和从 URL 附加
拆离数据库和日志文件,并将其传输到 Azure Blob 存储。 然后在 Azure VM 上从 URL 附加数据库。 如果希望物理数据库文件驻留在 Blob 存储中,可使用此方法,这可能对非常大的数据库很有用。 使用此手动方法按照下列常规步骤迁移用户数据库:
- 从本地数据库实例拆离数据库文件。
- 使用 AZCopy 命令行实用程序将分离的数据库文件复制到 Azure Blob 存储。
- 从 Azure URL 将数据库文件附加到 Azure VM 中的 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 对象。
下表提供了可在迁移用户数据库之前或之后完成的一系列组件和建议的迁移方法。
功能 | 组件 | 迁移方法 |
---|---|---|
数据库 | 建模 | 使用 SQL Server Management Studio 编写脚本。 |
数据库 | 计划将 tempdb 移动到 Azure VM 临时磁盘 (SSD) 以获得最佳性能。 请确保选择具有足够的本地 SSD 的 VM 大小来容纳 tempdb 。 |
|
具有文件流的用户数据库 | 使用备份和还原方法进行迁移。 数据迁移助手文件流不支持数据库。 | |
安全性 | SQL Server 和 Windows 登录名 | 使用数据迁移助手迁移用户登录名。 |
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 编写脚本。 |
Management | 数据库邮件 | 使用 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 查询。 创建对源数据库和目标数据库都运行的验证查询。 验证查询应涵盖已定义的范围。
- 设置测试环境:测试环境应包含源数据库和目标数据库的副本。 请确保隔离测试环境。
- 运行验证测试:针对源和目标运行验证测试,然后分析结果。
- 运行性能测试:针对源和目标运行性能测试,然后分析并比较结果。
提示
借助数据库实验助手评估目标 SQL Server 的性能。
优化
迁移后阶段对于协调所有数据准确性问题、验证完整性以及解决工作负载可能的性能问题至关重要。
有关这些问题的详细信息和用于缓解这些问题的步骤,请参阅: