通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

applies to:Azure SQL 托管实例

本文介绍如何使用 托管实例 链接将SQL Server数据库迁移到Azure SQL 托管实例。

有关详细的迁移指南,请查看 Migrate 到 Azure SQL 托管实例。 若要比较迁移工具,请查看 Compare LRS 与 托管实例 链接

注意

现在可以将Azure Arc启用的SQL Server实例直接通过Azure门户迁移到Azure SQL 托管实例。 有关详细信息,请参阅 Migrate 到 Azure SQL 托管实例

概述

托管实例链接允许从任何位置托管的SQL Server迁移到Azure SQL 托管实例。 该链接使用 AlwaysOn 可用性组技术将更改几乎实时地从主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 SQL 托管实例的任何本地SQL Server实例,以确定迁移阻止程序或兼容性问题。

可以使用 迁移就绪情况评估来评估源SQL Server实例。

有关详细指导,请参阅迁移前

创建目标实例

评估现有环境并确定目标 SQL 托管实例的相应服务层级和硬件配置后,请使用 Azure 门户、PowerShellAzure CLI 部署目标实例。

创建目标 SQL 托管实例后,在SQL Server实例和Azure SQL 托管实例上配置数据库之间的链接。 首先,准备环境然后使用 SQL Server Management Studio (SSMS)scripts 配置链接。

检查复制延迟

在执行计划的迁移故障转移之前,次要副本必须赶上主副本。 如果次要副本远远落后于主副本,计划内故障转移可能会超时和失败。

对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版本早于 2022 SQL Server,则无法进行反向迁移。 将数据库迁移到SQL 托管实例时,会进行内部升级到与早期SQL Server版本不兼容的较新的数据库版本。 仅当 SQL 托管实例配置了相应的更新策略时,才能实现反向迁移数据库兼容性。

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

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

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