迁移指南:将 SQL Server 到 Azure SQL 托管实例
适用于: Azure SQL 托管实例
在本指南中,了解如何将用户数据库从 SQL Server 迁移到 Azure SQL 托管实例。
迁移
完成预迁移阶段的步骤后,便可以执行架构和数据迁移。
使用所选的迁移方法迁移你的数据。
本部分提供以下建议迁移选项的常规迁移步骤:
- 托管实例链接
- 日志重播服务 (LRS)
- 适用于 Azure Data Studio 的 Azure SQL 迁移扩展 - 几乎无需停机即可实现迁移。
- 本机
RESTORE DATABASE FROM URL
- 使用来自 SQL Server 的本机备份,且需要停机一段时间。
SQL 托管实例面向需要从本地或 Azure VM 数据库实现迁移大量数据库的用户方案。 如果需要直接迁移定期使用实例级功能和/或跨数据库功能的应用程序的后端,则托管实例是最佳选择。 若采用此方案,可将整个实例转移到 Azure 中对应的环境,而无需重新构建应用程序。
若要转移 SQL 实例,需要认真规划:
- 迁移需要并置的所有数据库(在同一个实例上运行的数据库)。
- 迁移应用程序依赖的实例级对象,包括登录名、凭据、SQL 代理作业和操作员,以及服务器级触发器。
SQL 托管实例是一项托管服务,可便于将一些常规 DBA 活动委托给平台,就像平台中已内置这些活动一样。 因此,不需要迁移某些实例级数据,例如日常备份的维护作业或 Always On 配置,因为系统中内置了高可用性。
Azure Data Studio
本部分提供在 Azure Data Studio 中使用 Azure SQL 迁移扩展从 SQL Server 迁移到 Azure SQL 托管实例的高级步骤,此过程的故障时间最短。 有关详细说明,请参阅教程:在 Azure Data Studio 中将 SQL Server 联机迁移到 Azure SQL 托管实例。
若要使用 Azure Data Studio 进行迁移,请按照下列步骤操作:
- 下载并安装 Azure Data Studio 以及适用于 Azure Data Studio 的 Azure SQL 迁移扩展。
- 在 Azure Data Studio 的扩展中启动迁移到 Azure SQL 迁移向导。
- 选择数据库进行评估,并查看迁移就绪性或问题(如果有)。 此外,收集性能数据并获取适当大小的 Azure 建议。
- 从订阅中选择 Azure 帐户和目标 Azure SQL 托管实例。
- 选择数据库备份的位置。 数据库备份可以位于本地网络共享或 Azure Blob 存储容器中。
- 使用 Azure Data Studio 中的向导创建新的 Azure 数据库迁移服务。 如果之前使用 Azure Data Studio 创建了 Azure 数据库迁移服务,则可以根据需要重复使用该服务。
- 可选:如果备份在本地网络共享上,请在可以连接到源 SQL Server 的计算机上包含备份文件的位置中下载并安装自承载集成运行时。
- 在 Azure Data Studio 中启动数据库迁移并监视进度。 也可以在 Azure 门户中的 Azure 数据库迁移服务资源下监视进度。
- 完成直接转换。
- 停止传入源数据库的所有事务。
- 更改应用程序配置,使之指向 Azure SQL 托管实例中的目标数据库。
- 在指定的备份位置中,为源数据库执行任何结尾日志备份。
- 确保所有数据库备份在监视详细信息页中都显示为“还原”状态。
- 在监视详细信息页中选择“完成直接转换”。
托管实例链接
本部分提供使用托管实例链接从 SQL Server 迁移到 Azure SQL 托管实例的高级步骤,此过程的故障时间最短。 有关详细说明,请查看使用链接进行迁移。
要使用链接进行迁移,请执行以下步骤:
日志重播服务 (LRS)
本部分提供使用日志重播服务 (LRS) 从 SQL Server 迁移到 Azure SQL 托管实例的高级步骤,此过程的故障时间最短。 有关详细说明,请查看使用日志重播服务从 SQL Server 迁移数据库。
要使用 LRS 进行迁移,请执行以下步骤:
- 创建一个带有 Blob 容器的 Azure 存储帐户。
- 使用 SAS 令牌或托管标识对 Blob 存储帐户进行身份验证并验证访问权限。
- 如果计划迁移多个数据库,则请务必正确配置文件夹结构。
- 通过复制备份或直接使用备份到 URL 进行备份来将备份上传到存储帐户。
- 确定是否要在自动完成或连续模式下运行 LRS。
- 启动 LRS。
- 监视迁移进度。
- 完成迁移(如果处于连续模式中)。
备份和还原
可让 Azure SQL 托管实例实现快速轻松的数据库迁移的一项关键功能是对存储在 Azure 存储中的数据库备份 (.bak
) 文件的 SQL 托管实例进行本机还原。 备份和还原是基于数据库大小的异步操作。
下图高度概括了该过程:
注意
进行备份、将其上传到 Azure 存储以及对 Azure SQL 托管实例执行本机还原操作所花的时间取决于数据库大小。 请为针对大数据库的操作预留足够的停机时间。
下表提供了可以根据所运行的源 SQL Server 版本使用的方法的详细信息:
步骤 | SQL 引擎和版本 | 备份/还原方法 |
---|---|---|
将备份放入 Azure 存储 | 在 2012 SP1 CU2 之前 | 将 .bak 文件直接上传到 Azure 存储 |
2012 SP1 CU2 - 2016 | 使用已弃用的 WITH CREDENTIAL 语法直接备份 | |
2016 及更高版本 | 使用 WITH SAS CREDENTIAL 直接备份 | |
从 Azure 存储还原到托管实例 | 使用 SAS CREDENTIAL 执行 RESTORE FROM URL |
重要
使用本机还原选项将透明数据加密保护的数据库迁移到托管实例时,需要先迁移本地或 Azure VM SQL Server 中的相应证书,再还原数据库。 有关详细步骤,请参阅将受 TDE 保护的数据库的证书迁移到 Azure SQL 托管实例。
不支持还原系统数据库。 若要迁移实例级对象(存储在 master
或 msdb
数据库中),建议编写 T-SQL 脚本,并在目标实例上运行这些脚本。
要使用备份和还原进行迁移,请执行以下步骤:
将数据库备份到 Azure Blob 存储。 例如,在 SQL Server Management Studio 中使用备份到 URL。 使用 Microsoft Azure Tools 支持早于 SQL Server 2012 SP1 CU2 的数据库。
使用 SQL Server Management Studio 连接到 Azure SQL 托管实例。
使用共享访问签名创建凭据,以通过数据库备份访问 Azure Blob 存储帐户。 例如:
CREATE CREDENTIAL [https://mitutorials.blob.core.windows.net/databases] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<secret>'
从 Azure 存储 blob 容器还原备份。 例如:
RESTORE DATABASE [TargetDatabaseName] FROM URL = 'https://mitutorials.blob.core.windows.net/databases/WideWorldImporters-Standard.bak'
还原完成后,请在 SQL Server Management Studio 的“对象资源管理器”中查看数据库。
若要详细了解此迁移选项,请参阅快速入门:使用 SSMS 将数据库还原到 Azure SQL 托管实例。
注意
数据库还原操作是异步且可重试的。 如果连接中断或某些超时过期,SQL Server Management Studio 中可能会显示错误。 Azure SQL 数据库将在后台继续尝试还原数据库,可以使用 sys.dm_exec_requests 和 sys.dm_operation_status 视图来跟踪还原进度。
数据同步和直接转换
当使用将数据更改持续从源复制/同步到目标的迁移选项时,源数据和架构可能会变化并偏离目标。 在数据同步过程中,请确保在迁移过程中捕获对源的所有更改并将其应用到目标。
验证了源和目标上的数据相同后,可以从源环境直接转换到目标环境。 请务必与业务/应用程序团队一起计划直接转换过程,以确保直接转换过程中的最小中断不会影响业务连续性。
重要
有关与使用 DMS 进行迁移时执行直接转换相关的特定步骤的详细信息,请参阅执行直接转换迁移。
迁移后
成功完成迁移阶段后,执行一系列的迁移后任务,确保一切顺利高效进行。
迁移后阶段对于协调所有数据准确性问题、验证完整性以及解决工作负载的性能问题至关重要。
监视和修正应用程序
迁移到托管实例后,应跟踪应用程序的行为和工作负载的性能。 此过程包括以下活动:
- 将托管实例上运行的工作负载的性能与在源 SQL Server 实例上创建的性能基线进行比较。
- 持续监视工作负荷的性能,以识别潜在问题并做出改善。
执行测试
数据库迁移的测试方法包括以下活动:
- 开发验证测试:要测试数据库迁移,需要使用 SQL 查询。 必须创建针对源数据库和目标数据库运行的验证查询。 验证查询应涵盖定义的范围。
- 设置测试环境:测试环境应包含源数据库和目标数据库的副本。 请确保隔离测试环境。
- 运行验证测试:针对源和目标运行验证测试,然后分析结果。
- 运行性能测试:针对源和目标运行性能测试,然后分析和比较结果。
使用高级功能
可以充分利用 SQL 托管实例提供的基于云的高级功能,例如内置高可用性、威胁检测以及监视和优化工作负载。
使用 Azure SQL Analytics 可以集中监视大量托管实例。
只有将数据库兼容性级别更改为最新的兼容性级别 (150) 后,某些 SQL Server 功能才可用。