使用链接进行迁移 - Azure SQL 托管实例

适用于:Azure SQL 托管实例

本文介绍如何使用托管实例链接将 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 托管实例的链接来进行迁移,需要满足以下先决条件:

评估和发现

验证你的源环境是否受支持后,开始预迁移阶段。 发现所有现有数据源,评估迁移可行性,确定可能会妨碍迁移的任何阻碍性问题。 在“发现”阶段,扫描网络以查明你的组织使用的所有 SQL Server 实例和功能。

可以使用以下工具来发现环境中的 SQL 源:

  • Azure Arc 启用的 SQL Server:Azure Arc 启用的 SQL Server 会自动生成迁移到 Azure 的评估,从而简化迁移的发现过程和准备情况评估。
  • Azure Migrate,用于评估本地服务器的迁移适用性,执行基于性能的大小调整,并为提供在 Azure 中运行服务器的成本估算。
  • Microsoft 评估和规划工具包(“MAP 工具包”),用于评估你当前的 IT 基础结构。 该工具包提供了功能强大的清单、评估和报告工具,可以简化迁移规划过程。

发现数据源后,评估可迁移到 Azure SQL 托管实例的任何本地 SQL Server 实例,以确定是否存在迁移阻碍或兼容性问题。

创建目标实例

评估现有环境并确定目标 SQL 托管实例的相应服务层级和硬件配置后,请使用 Azure 门户PowerShellAzure 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 个数据库,并重复此过程,直到迁移所有数据库。

数据同步和直接转换

建立链接并准备好迁移后,请遵循以下步骤(通常在维护时段):

  1. 停止主 SQL Server 数据库上的工作负载,使 SQL 托管实例上的辅助数据库能够跟上进度。 停止SQL Server主副本上的工作负荷的最简单方法是切断与实例的应用程序连接。
  2. 验证所有数据是否都已迁移到 SQL 托管实例上的辅助数据库。 检查 复制滞后 时间,确保辅助副本与主副本保持同步。
  3. 通过选择“计划的故障转移”,将链接故障转移到辅助 SQL 托管实例。
  4. (可选)选中在成功故障转移后删除链接 的框,确保故障转移为单向,并删除该链接。
  5. (可选)如果使用支持的 SQL Server 版本,并具备匹配的 SQL 托管实例更新策略,则可以在故障转移后保留链接,以便在需要时反向迁移。 查看 反向迁移部分 以了解特定版本详细信息。
  6. 直接转换应用程序,以连接至 SQL 托管实例终结点。
  7. (可选)如果未选择在故障转移期间删除链接,则可以在切换后且不再需要链接时将其删除。

验证迁移

切换到 SQL 托管实例目标后,监视应用程序、测试性能并修正任何问题。

反向迁移

根据 SQL 托管实例的 更新策略 ,可能会支持从 Azure SQL 托管实例反向迁移到 SQL Server。 例如:

如果源 SQL Server 版本早于 SQL Server 2022,则无法进行反向迁移。 将数据库迁移到 SQL 托管实例时,它将进行内部升级到与早期 SQL Server 版本不兼容的较新版本。 仅当 SQL 托管实例配置了相应的更新策略时,才能实现反向迁移数据库兼容性。

要使用该链接,请参阅以下内容:

要了解有关该链接的详细信息,请参阅以下内容:

对于其他复制和迁移方案,请考虑: