本文介绍如何使用托管实例链接将 SQL Server 数据库迁移到 Azure SQL 托管实例。
概述
托管实例链接支持从在任何位置托管的 SQL Server 迁移到 Azure SQL 托管实例。 该链接使用 Always On 可用性组技术以几乎实时地方式将更改从主 SQL Server 实例复制到辅助 SQL 托管实例。 此链接提供 SQL Server 与 Azure SQL 托管实例之间唯一真正联机的迁移选项,因为唯一的停机时间发生在切换到目标 SQL 托管实例期间。
使用链接进行迁移让你能够:
- 在完成到 Azure 的迁移之前,能够在 SQL 托管实例上测试只读工作负载。
- 能够确保链接和迁移根据需要持续运行,可以是几周,甚至几个月。
- 准实时复制数据,提供到 Azure 的最快可用数据复制。
- 与目前可用的所有其他解决方案相比,其迁移导致的停机时间最短。
- 即时直接转换到目标 SQL 托管实例。
- 能够在准备就绪时随时进行迁移。
- 能够将单个或多个数据库从单个或多个 SQL Server 实例迁移到 Azure 中的相同或多个 SQL 托管实例。
- 以唯一真正联机的方式迁移到业务关键服务层级。
注意
虽然每个链接只能迁移一个数据库,但可以建立从同一 SQL Server 实例到同一SQL 托管实例的多个链接。
先决条件
若要使用 Azure SQL 托管实例的链接来进行迁移,需要满足以下先决条件:
- 有效的 Azure 订阅。 如果没有订阅,请创建一个试用帐户。
- 支持的 SQL Server 版本,安装了所需的服务更新。
评估和发现
验证你的源环境是否受支持后,开始预迁移阶段。 发现所有现有数据源,评估迁移可行性,确定可能会妨碍迁移的任何阻碍性问题。 在“发现”阶段,扫描网络以查明你的组织使用的所有 SQL Server 实例和功能。
可以使用以下工具来发现环境中的 SQL 源:
- Azure Arc 启用的 SQL Server:Azure Arc 启用的 SQL Server 会自动生成迁移到 Azure 的评估,从而简化迁移的发现过程和准备情况评估。
- Azure Migrate,用于评估本地服务器的迁移适用性,执行基于性能的大小调整,并为提供在 Azure 中运行服务器的成本估算。
- Microsoft 评估和规划工具包(“MAP 工具包”),用于评估你当前的 IT 基础结构。 该工具包提供了功能强大的清单、评估和报告工具,可以简化迁移规划过程。
发现数据源后,评估可迁移到 Azure SQL 托管实例的任何本地 SQL Server 实例,以确定是否存在迁移阻碍或兼容性问题。
创建目标实例
评估现有环境并确定目标 SQL 托管实例的相应服务层级和硬件配置后,请使用 Azure 门户、PowerShell 或 Azure CLI 部署目标实例。
配置链接
创建目标 SQL 托管实例后,在 SQL Server 实例和 Azure SQL 托管实例上配置数据库之间的链接。 首先,准备环境,然后使用 SQL Server Management Studio (SSMS) 或脚本配置链接。
检查复制延迟
在执行计划的迁移故障转移之前,次要副本必须赶上主副本。 如果次要副本远远落后于主副本,计划内故障转移可能会超时和失败。
对SQL Server和SQL 托管实例使用以下 T-SQL 查询监视副本之间的复制延迟:
-- Execute on SQL Server and SQL Managed Instance
USE master
DECLARE @link_name varchar(max) = '<DAGname>'
SELECT
ag.name [Link name],
ars1.role_desc [Link role],
ars2.connected_state_desc [Link connected state],
ars2.synchronization_health_desc [Link sync health],
drs.secondary_lag_seconds [Link replication latency (seconds)]
FROM
sys.availability_groups ag
JOIN sys.dm_hadr_availability_replica_states ars1
ON ag.group_id = ars1.group_id
JOIN sys.dm_hadr_availability_replica_states ars2
ON ag.group_id = ars2.group_id
JOIN sys.dm_hadr_database_replica_states drs
ON ars2.replica_id = drs.replica_id
WHERE
ag.is_distributed = 1 AND ag.name = @link_name AND ars1.is_local = 1 AND ars2.is_local = 0
GO
如果复制滞后时间较高,请等待辅助副本赶上主副本。 如果滞后时间仍然存在(例如暂停主副本上的工作负荷、改善两个实例之间的链接网络吞吐量或增加辅助副本上的资源容量),则可能需要执行其他故障排除步骤。 停止SQL Server主副本上的工作负荷的最简单方法是切断与实例的应用程序连接。
迁移多个数据库
如果计划从同一服务器上的实例迁移多个数据库,以实现最佳性能和可预测性,请一次迁移每个实例 8 个数据库。 例如,如果每个实例有 10 个实例,每个实例有 32 个链接数据库,则每次使用计划的故障转移从每个实例迁移 8 个数据库,并重复此过程,直到迁移所有数据库。
数据同步和直接转换
建立链接并准备好迁移后,请遵循以下步骤(通常在维护时段):
- 停止主 SQL Server 数据库上的工作负载,使 SQL 托管实例上的辅助数据库能够跟上进度。 停止SQL Server主副本上的工作负荷的最简单方法是切断与实例的应用程序连接。
- 验证所有数据是否都已迁移到 SQL 托管实例上的辅助数据库。 检查 复制滞后 时间,确保辅助副本与主副本保持同步。
- 通过选择“计划的故障转移”,将链接故障转移到辅助 SQL 托管实例。
- (可选)选中在成功故障转移后删除链接 的框,确保故障转移为单向,并删除该链接。
- (可选)如果使用支持的 SQL Server 版本,并具备匹配的 SQL 托管实例更新策略,则可以在故障转移后保留链接,以便在需要时反向迁移。 查看 反向迁移部分 以了解特定版本详细信息。
- 直接转换应用程序,以连接至 SQL 托管实例终结点。
- (可选)如果未选择在故障转移期间删除链接,则可以在切换后且不再需要链接时将其删除。
验证迁移
切换到 SQL 托管实例目标后,监视应用程序、测试性能并修正任何问题。
反向迁移
根据 SQL 托管实例的 更新策略 ,可能会支持从 Azure SQL 托管实例反向迁移到 SQL Server。 例如:
- SQL Server 2022 更新策略:可以使用 SQL Server 2022 更新策略配置的实例中的数据库还原回 SQL Server 2022 实例。
- SQL Server 2025 更新策略:可以使用 SQL Server 2025 更新策略配置的实例中的数据库还原回 SQL Server 2025 实例。
如果源 SQL Server 版本早于 SQL Server 2022,则无法进行反向迁移。 将数据库迁移到 SQL 托管实例时,它将进行内部升级到与早期 SQL Server 版本不兼容的较新版本。 仅当 SQL 托管实例配置了相应的更新策略时,才能实现反向迁移数据库兼容性。
相关内容
要使用该链接,请参阅以下内容:
要了解有关该链接的详细信息,请参阅以下内容:
对于其他复制和迁移方案,请考虑: