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

托管实例链接功能概述(预览版)

适用于: Azure SQL 托管实例

本文概述了托管实例链接功能,该功能支持从 SQL Server 到 Azure SQL 托管实例的准实时数据复制。 该链接提供混合灵活性和数据库移动性,因为它解锁许多方案,例如缩放只读工作负载、将分析和报告卸载到 Azure 以及迁移到云。 而且,在 SQL Server 2022 中,链接功能可实现灾难恢复。

如果你有任何产品改进建议或意见,或想报告问题,请通过托管实例链接用户反馈联系我们的团队。

概述

托管实例链接功能使用分布式可用性组以安全可靠的方式将托管在任意位置的 SQL Server 本地 Always On 可用性组扩展到 Azure SQL 托管实例,从而准实时复制数据。

链接功能支持没有现有可用性组的单节点 SQL Server 实例,也支持具有现有可用性组的多节点 SQL Server 实例。 通过链接,你可以使用 Azure 的最新优势,而无需将整个 SQL Server 数据资产迁移到云。

链接功能当前提供以下功能:

  • 单向复制 (SQL Server 版本 2017 到 2019):使用链接功能将数据从 SQL Server 实例单向复制到托管实例。 尽管在发生灾难时可以手动故障转移到托管实例,但这样做会中断链接,并且不支持故障回复。

  • 灾难恢复 (SQL Server 2022):使用链接功能将数据从 SQL Server 2022 实例复制到托管实例,在灾难期间手动故障转移到托管实例,并在灾难缓解后故障回复到 SQL Server 实例。

    此功能目前以受限公共预览版提供。 你必须注册该受限公共预览版,以便产品组可配置预览版环境。

只要你需要,你可以一直运行该链接,一次可以运行几个月甚至数年。 对于你的新式化之旅,如果或当你准备迁移到 Azure 时,链接可以大幅改善迁移体验。 与目前可用的所有其他选项相比,它提供最短的停机时间,并提供到 SQL 托管实例部署的真正联机迁移。

先决条件

Azure SQL 托管实例的常规用途和业务关键服务层级均支持托管实例链接。

若要对 SQL Server 使用链接功能,需要在 Windows Server 上运行的受支持的 Enterprise、Standard 或 Developer 版 SQL Server。

下表列出了链接功能的功能和受支持的 SQL Server 版本:

SQL Server 版本 操作系统 (OS) 单向复制 灾难恢复 服务更新要求
SQL Server 2022 (16.x) Windows Server 和 Linux 正式发布 必须注册受限公共预览版 SQL Server 2022 RTM
SQL Server 2019 (15.x) Windows Server 预览 不支持 Enterprise 和 Developer 版需要 SQL Server 2019 CU15 (KB5008996) 或更高版本;Standard 版需要 CU17 (KB5016394) 或更高版本
SQL Server 2017 (14.x) 空值 不支持 不支持 空值
SQL Server 2016 (13.x) Windows Server 预览 不支持 SQL Server 2016 SP3 (KB 5003279)SQL Server 2016 Azure Connect 包 (KB 5014242)

不支持 SQL Server 2008 到 2014 版本,因为链接功能依赖于在 SQL Server 2016 中引入的分布式可用性组技术。

除了受支持的 SQL Server 版本,你还需要:

  • 在 SQL Server 实例和托管实例之间建立网络连接。 如果 SQL Server 在本地运行,请使用 VPN 链路或 Azure ExpressRoute。 如果 SQL Server 在 Azure 虚拟机 (VM) 上运行,请将 VM 部署到托管实例所在的虚拟网络,或使用虚拟网络对等互连来连接两个单独的子网。
  • 预配到任何服务层级的 Azure SQL 托管实例部署。

还需要使用以下工具:

工具 注释
SSMS 19.0 或更高版本 SQL Server Management Studio (SSMS) 是使用托管实例链接的最简单方法。 它提供用于 SQL Server 2016、2019 和 2022 版本的自动链接设置的图形向导。 使用 SSMS 从托管实例故障回复到 SQL Server 2022 的功能仅在受限公共预览版中可用。 注册受限公共预览版
Az.SQL 3.9.0 或更高版本 手动配置步骤需要使用 PowerShell 模块。

注意

托管实例链接功能在所有公共 Azure 区域和国家/地区云或政府云中均可用。

SQL 托管实例链接功能背后的底层技术可在 SQL Server 和 Azure SQL 托管实例之间创建分布式可用性组。 该解决方案支持没有现有可用性组的单节点系统,或具有现有可用性组的多节点系统。

显示 SQL 托管实例链接功能的工作原理的关系图。

在本地网络和 Azure 之间使用安全连接,例如 VPN 或 Azure ExpressRoute。 如果 SQL Server 托管在 Azure VM 上,则可在 VM 和托管实例之间使用内部 Azure 主干网,例如虚拟网络对等互连。 这两个系统之间的信任是使用基于证书的身份验证建立的,其中 SQL Server 和 SQL 托管实例互换公钥。

从同一个或不同的 SQL Server 源到单个 Azure SQL 托管实例,可多达 100 个链接。 此限制由托管实例上可以同时托管的数据库数量控制。 同样,单个 SQL Server 实例可以与不同 Azure 区域中的多个托管实例建立多个并行数据库同步链接,数据库和托管实例之间为一对一的关系。

支持的方案

通过链接功能从 SQL Server 复制到 Azure SQL 托管实例的数据库可用于多种方案,例如:

  • 在不迁移到云的情况下使用 Azure 服务
  • 将只读工作负载卸载到 Azure
  • 迁移到 Azure
  • SQL Server 2022 的灾难恢复(目前以受限公共预览版提供)

说明主要托管实例链接方案的示意图。

使用 Azure 服务

通过链接功能和 SQL Server 数据来利用 Azure 服务,而无需迁移到云。 示例包括报告、分析、备份、机器学习和其他将数据发送到 Azure 的作业。

将工作负载卸载到 Azure

你还可以使用链接功能将工作负载卸载到 Azure。 例如,应用程序可以将 SQL Server 用于读/写工作负载,同时将只读工作负载卸载到全球任一 Azure 区域的 SQL 托管实例部署。 建立链接后,SQL Server 上的主数据库可进行读/写访问,而复制到 Azure 托管实例的数据只能进行读取访问。 这种布置将支持各种方案,其中,托管实例上的复制数据库可用于读取扩展并将只读工作负载卸载到 Azure。 同时,托管实例还可以托管独立的读/写数据库。 这允许将复制的数据库复制到同一托管实例上的另一个读/写数据库,以进一步处理数据。

链接是数据库范围的(每个数据库一个链接),允许合并和拆分 Azure 中的工作负载。 例如,你可以将数据库从多个 SQL Server 实例复制到 Azure 中的单个 SQL 托管实例部署(合并),或者可以通过数据库与托管实例之间的一对一关系,将数据库从单个 SQL Server 实例复制到多个托管实例,再复制到 Azure 在全球的任何区域(拆分)。 后面的选项提供了一种高效的方法,允许你将工作负载快速部署到更接近全球各地客户的位置,你可以将其用作只读副本。

迁移到 Azure

链接功能还有助于从 SQL Server 迁移到 SQL 托管实例,可实现:

  • 与目前可用的所有其他解决方案相比,性能最高、停机时间最短的迁移。
  • 到任何服务层级中的 SQL 托管实例的真正联机迁移。

由于链接功能可实现停机时间最短的迁移,因此,你可以在保持主要工作负载联机的同时迁移到托管实例。 尽管目前可以使用其他解决方案实现联机迁移到常规用途服务层级,但链接功能是唯一允许真正联机迁移到业务关键层的解决方案。

自动备份

将数据库复制到托管实例后,会通过 Azure 备份将它们自动备份到 Azure Blob 存储帐户。 你可以降低本地管理和操作成本,同时在已复制数据库上获得可靠的 Azure 备份功能。 然后,可以对已复制数据库执行到同一区域中任何 SQL 托管实例部署的时间点还原,就像执行任何其他自动备份一样。

灾难恢复

如果正在运行 SQL Server 2022,则可以使用托管实例链接进行灾难恢复,在发生灾难时,可以手动将工作负载故障转移到 Azure SQL 托管实例。 灾难缓解后,可以故障回复到 SQL Server 2022。

此功能目前以受限公共预览版提供。 你必须注册该受限公共预览版,以便产品组可配置预览版环境。

显示灾难恢复方案的示意图。

创建链接后,若要确保遵循维护链接的最佳做法,请参阅 Azure SQL 托管实例中链接功能的最佳做法

当你准备好以最短的停机时间将数据库迁移到 Azure,可以使用 SSMS 中的自动向导或使用脚本手动执行此操作。

执行以下操作之一:

限制

使用链接时,请考虑以下限制。

版本可支持性限制包括:

  • 无法使用 Windows 10 和 11 客户端来托管 SQL Server 实例,因为无法启用链接所需的 Always On 可用性组功能。 SQL Server 实例必须托管在 Windows Server 2012 或更高版本上。
  • 链接功能不支持 SQL Server 版本 2008 到 2014,因为这些版本的 SQL 引擎不具备对链接所需的分布式可用性组的内置支持。 升级到较新版本的 SQL Server 以使用链接功能。

数据复制限制包括:

  • 只能复制用户数据库。 不支持复制系统数据库。
  • 解决方案不会将服务器级对象、代理作业或用户登录名从 SQL Server 复制到 SQL 托管实例。
  • 对于 SQL Server 版本 2016 到 2019,将用户数据库从 SQL Server 实例复制到 SQL 托管实例部署是单向操作。 无法将用户数据库从 SQL 托管实例部署复制回 SQL Server 实例。 故障回复到 SQL Server 实例的双向复制仅适用于 SQL Server 2022。

配置限制包括:

  • 如果一台服务器上有多个 SQL Server 实例,则可为每个实例配置一个链接,但必须将每个实例配置为使用单独的数据库镜像终结点,且每个实例都有一个专用端口。 只有默认实例应将端口 5022 用于数据库镜像终结点。

  • 对于每个托管实例链接,只能将一个数据库放入单个可用性组。

  • 托管实例链接可以复制任何大小的数据库,前提是该数据库适合目标 SQL 托管实例部署的所选存储大小。

  • SQL Server 与 SQL 托管实例之间的托管实例链接身份验证基于证书,只能通过证书交换实现此目的。 不支持使用 Windows 身份验证在 SQL Server 实例和托管实例之间建立链接。

  • 仅支持专用终结点(VPN/虚拟网络)来建立与 SQL 托管实例的链接。 不能使用公共终结点与托管实例建立链接。

功能限制包括:

  • 使用链接功能的实例不支持自动故障转移组。 无法在属于自动故障转移组的托管实例上建立链接,相反,无法在已建立链接的实例上配置自动故障转移组。

  • 如果对 SQL Server 实例上复制的数据库使用变更数据捕获 (CDC)、日志传送或服务代理,当数据库迁移到 SQL 托管实例部署时以及在故障转移到 Azure 期间,客户端需要使用当前全局主要副本的实例名称进行连接。 这些设置应手动重新配置。

  • 如果在迁移方案中将事务复制与 SQL Server 实例上的数据库一起使用,则故障转移到 Azure 期间,SQL 托管实例部署上的事务复制将失败,并且应手动重新配置。

  • 如果对从 SQL Server 实例复制的数据库使用分布式事务,并且执行的是迁移方案,则在切换到云时,将不会转移分布式事务处理协调器功能。 迁移的数据库无法参与 SQL Server 实例中的分布式事务,因为 SQL 托管实例部署目前不支持 SQL Server 中的分布式事务。 作为参考,SQL 托管实例目前仅支持其他托管实例之间的分布式事务。 有关详细信息,请参阅跨云数据库的分布式事务

  • 如果托管实例不支持在 SQL Server 实例上使用的功能,则无法在 SQL Server 与 SQL 托管实例之间建立链接。 例如:

    • 无法复制包含文件表和文件流的数据库,因为 SQL 托管实例不支持文件表或文件流。

    • 使用内存中 OLTP (Hekaton) 的数据库只能复制到 SQL 托管实例业务关键服务层级,因为常规用途服务层级不支持内存中 OLTP。

有关 SQL Server 和 SQL 托管实例之间差异的完整列表,请参阅 SQL Server 和 Azure SQL 托管实例之间的 T-SQL 差异

后续步骤

有关链接功能的详细信息,请参阅:

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