了解 Azure SQL 托管实例

已完成

虽然许多组织最初使用 IaaS 产品/服务迁移到 Azure,但平台即服务(PaaS)提供了额外的优势。 使用 PaaS,服务将处理安装和修补 SQL Server,因此不再需要执行这些任务。 一致性检查、备份、安全性和性能工具也包含在托管服务中。

Azure SQL 托管实例 是一个功能齐全的 SQL Server 实例,与本地生态系统兼容近 100%。 它包括 SQL 代理、访问 tempdb、跨数据库查询和公共语言运行时(CLR)等功能。 此服务使用与 Azure SQL 数据库相同的基础结构,并提供 PaaS 的所有优势,例如自动备份、自动修补和内置高可用性。

Azure SQL 托管实例功能

Azure SQL 托管实例通过启用从本地备份还原,为现有应用程序提供无缝迁移路径。 与专为单一数据库结构设计的 Azure SQL 数据库不同,SQL 托管实例提供完整的 SQL Server 实例,支持最多 100 个数据库并授予对系统数据库的访问权限。 它还包括 Azure SQL 数据库中不可用的功能,例如跨数据库查询、公共语言运行时 (CLR),以及通过 msdb 系统数据库使用 SQL 代理。

创建 Azure SQL 托管实例时,可以在两个服务层级之间进行选择:业务关键和常规用途。 这些层与 Azure SQL 数据库 vCore 模型保持一致,因为 SQL 托管实例是使用此模型购买的。 这两个层之间的主要区别在于业务关键层包括 In-Memory OLTP,并提供一项在常规用途层中不可用的可读辅助副本功能。 这两个层都提供高可用性,业务关键层使用 AlwaysOn 可用性组实现更高的复原能力。 此外,这两个层都允许独立配置存储和计算资源。

Link 功能通过将数据库从 SQL Server 实例复制到 Azure SQL 托管实例来提供混合功能。 它使用分布式可用性组(AlwaysOn 可用性组技术的一部分)来复制数据。 事务日志记录作为这些分布式可用性组的一部分进行复制。

主实例上的事务日志记录在复制到辅助实例之前无法截断。 常规事务日志备份有助于降低主实例空间不足的风险。

链接功能还可用作混合灾难恢复解决方案,在这种情况下,你可以将托管在任意位置的 SQL Server 数据库故障转移到在 SQL 托管实例上运行的数据库。 此外,可以使用“链接功能”在 SQL 托管实例中提供只读辅助数据库,从而卸载密集型只读操作。

有关如何为 Azure SQL 托管实例配置链接功能的详细信息,请参阅为链接功能准备环境 - Azure SQL 托管实例

实例池

实例池提供了一种经济高效的方法来将较小的 SQL Server 实例迁移到云。 实例池无需将较小的数据库合并到更大的托管实例中,这需要额外的治理和安全规划,而是允许根据总迁移需求和要求预先预配资源。

实例池功能提供长达 10 分钟的快速部署时间,非常适合部署持续时间至关重要的方案。 此外,池中的所有实例共享同一虚拟机,并且总 IP 分配与部署的实例数无关。

若要了解如何为 SQL 托管实例部署实例池,请参阅将 Azure SQL 托管实例部署到实例池

高可用性和灾难恢复

Azure SQL 托管实例(作为 PaaS 服务)本身可提供高可用性。 独立的 SQL 托管实例提供 99.99% 服务级别协议(SLA),确保每年最多停机 52.60 分钟。 体系结构反映了 Azure SQL 数据库:常规用途层使用存储复制来获得可用性,而业务关键层则采用多个副本来提高复原能力。

Azure SQL 托管实例提供自动故障转移组,用于灾难恢复,保护整个托管实例及其所有数据库。 此功能以异步方式将数据从主 Azure SQL 托管实例复制到辅助实例,但目前仅限于主实例的配对 Azure 区域,只允许一个副本。

与 Azure SQL 数据库类似,自动故障转移组提供读写和只读侦听器终结点,简化了连接字符串管理。 如果出现故障转移,应用程序连接字符串将自动路由到相应的实例。 但是,这些终结点采用略有不同的格式:<fog-name>.zone_id.database.windows.net用于 SQL 托管实例,而<fog-name>.zone_id.database.windows.net whereas Azure SQL Database is in the <fog-name>.secondary.database.windows.net用于 Azure SQL 数据库。

主托管实例和辅助托管实例必须位于同一 DNS 区域中。 这可确保同一个多域证书可用于故障转移组中实例之间的客户端连接身份验证。 可以通过 Azure 门户、PowerShell 或 Azure CLI 指定“DNS 区域合作伙伴”。

备份

默认情况下,为 Azure SQL 托管实例配置自动备份。 Azure SQL 托管实例和 Azure SQL 数据库之间的一个关键区别在于,使用 SQL 托管实例,可以手动创建数据库的仅复制备份。 这些备份必须存储到 URL,因为不允许本地存储访问。 此外,还可以配置长期保留(LTR),以在异地冗余 Azure Blob 存储中保留最多 10 年的自动备份。

数据库备份遵循与 Azure SQL 数据库相同的计划,因此无法调整这些计划。

  • 完整备份:每周一次
  • 差异备份:每 12 小时一次
  • 事务日志:每 5-10 分钟一次,具体取决于事务日志使用情况

将数据库还原到 Azure SQL 托管实例的过程与 Azure SQL 数据库的过程类似。 可以使用 Azure 门户、PowerShell 或 Azure CLI。 若要从一个实例还原到另一个实例,这两个实例必须位于同一 Azure 订阅和区域中。 此外,不能还原整个托管实例,仅还原 SQL 托管实例中的单个数据库。

与 Azure SQL 数据库一样,你无法通过现有数据库进行还原。 在从备份还原现有数据库之前,需要删除或重命名现有数据库。 由于 SQL 托管实例是一个功能齐全的 SQL Server 实例,因此可以执行 RESTORE 命令,而这在 Azure SQL 数据库中是不可能的。 但是,作为 PaaS 服务,存在一些限制:

  • 必须从 URL 终结点还原,因为无法访问本地驱动器。
  • 你可以使用以下选项(除了指定数据库):
    • FILELISTONLY
    • HEADERONLY
    • LABELONLY
    • VERIFYONLY
  • 无法还原包含多个日志文件的备份文件
  • 无法还原包含多个备份集的备份文件
  • 无法还原包含 In-Memory/FILESTREAM 的备份

默认情况下,托管实例中的数据库使用 透明数据加密(TDE) 和Microsoft管理的密钥进行加密。 若要执行用户发起的仅限复制的备份,必须为特定数据库禁用 TDE。 如果数据库已加密,则可以还原该数据库,但需要访问用于加密的证书或非对称密钥。 如果没有这些,则无法将数据库还原到 SQL 托管实例。

若要了解 Azure SQL 托管实例的新功能,请参阅 Azure SQL 托管实例中的新增功能