Azure SQL 托管实例
虽然许多组织最初使用 IaaS 产品/服务迁移到 Azure,但平台即服务 (PaaS) 产品/服务具有其他优势。 此外,你不再需要安装或修补 SQL Server,因为服务会负责这些操作。 一致性检查和备份也是托管服务的一部分,包括 PaaS 产品/服务中的安全和性能工具。
Azure SQL 托管实例是一个功能齐全的 SQL Server 实例,几乎 100% 与本地生态系统兼容。 功能包括 SQL代理、访问 tempdb、跨数据库查询和公共语言运行时 (CLR) 等。 该服务使用与 Azure SQL 数据库相同的基础结构,并具有 PaaS 服务的所有优势,如自动备份、自动修补和内置的高可用性。
Azure SQL 托管实例功能
Azure SQL 托管实例允许从本地备份中还原,从而为现有应用程序提供简单的迁移路径。 与围绕单一数据库结构设计的 Azure SQL 数据库不同,托管实例提供了整个 SQL 托管实例,允许多达 100 个数据库,并提供对系统数据库的访问权限。 SQL 托管实例具有 Azure SQL 数据库中不可用的其他功能(包括跨数据库查询、公共语言运行时 (CLR) 以及 msdb 系统数据库),它允许使用 SQL 代理。
选项
创建 Azure SQL 托管实例时有两个可用的服务层级,它们与 Azure SQL 数据库 vCore 模型(使用 vCore 模型购买托管实例)、业务关键和常规用途相同。 这两个层级之间的功能差异最小,两个主要差异是,“业务关键”包括内存中 OLTP 并提供可读辅助,而这两项在常规用途中均不可用。 两个层级提供的可用性级别都相同,并允许独立配置存储和计算。
链接功能(预览版)
链接功能提供将数据库从 SQL Server 实例复制到 Azure SQL 托管实例的混合功能。 链接功能使用基于 Always On 可用性组技术的分布式可用性组复制数据。 事务日志记录作为分布式可用性组的一部分进行复制。
主实例上的事务日志记录不能被截断,除非它们已复制到辅助实例。 定期备份事务日志可降低主实例空间不足的风险。
链接功能还可用作混合灾难恢复解决方案,在这种情况下,你可以将托管在任意位置的 SQL Server 数据库故障转移到在 SQL 托管实例上运行的数据库。 同样,可以使用链接功能在 SQL 数据库 SQL 托管实例中提供只读辅助数据库来卸载密集型只读操作。
有关如何为 Azure SQL 托管实例配置链接功能的详细信息,请参阅为链接功能准备环境 - Azure SQL 托管实例。
实例池(预览版)
实例池提供一种将小型 SQL Server 实例迁移到云的方便且经济高效的方式。 迁移到 Azure 时,使用实例池,你可以根据总迁移资源和要求预先配置资源,而无需将较小的数据库合并到更大的托管实例中(这需要额外的治理和安全规划)。
实例池功能可提供快速的部署时间(最长不超过 5 分钟),对于部署持续时间非常重要的场景,这是一个很不错的选择。 此外,池中的所有实例共享同一个虚拟机,并且总 IP 分配与部署的实例数无关。
若要了解如何为 SQL 托管实例部署实例池,请参阅将 Azure SQL 托管实例部署到实例池。
高可用性
由于 Azure SQL 托管实例由 PaaS 服务支持,因此在产品中具有很高的可用性。 单独的 SQL 托管实例可提供 99.99% 的服务级别协议 (SLA),这可保证每年长达 52.60 分钟的停机时间。 体系结构与具有常规用途的 Azure SQL 数据库相同,后者使用存储复制来提供可用性,并使用多个副本实现业务关键。
备份
Azure SQL 托管实例还配置了自动备份。 Azure SQL 托管实例和 Azure SQL 数据库之间的一个关键区别是,使用 MI,你可以手动对数据库进行仅复制备份。 必须备份到 URL,因为不允许访问本地存储。 你还可以在异地冗余的 Azure Blob 存储中配置长期保留 (LTR),保留自动备份长达 10 年。
数据库备份与 Azure SQL 数据库备份的计划相同。 这些计划不可调整。
- 完整备份:每周一次
- 差异备份:每 12 小时一次
- 事务日志:每 5-10 分钟一次,具体取决于事务日志使用情况
将数据库还原到 Azure SQL 托管实例也类似于 Azure SQL 数据库的过程。 可用工具如下:
- Azure 门户
- PowerShell
- Azure CLI
但是,在还原时有一些限制。 若要从一个实例还原到另一个实例,这两个实例必须位于相同的 Azure 订阅以及相同的 Azure 区域内。 你也不能还原整个托管实例,而只能还原 SQL 托管实例本身中的单个数据库。
与 Azure SQL 数据库一样,你无法通过现有数据库进行还原。 在从备份中还原现有数据库之前,需先将其删除或重命名。 由于 SQL 托管实例是一个功能齐全的 SQL Server 实例,因此你可以执行 RESTORE 命令,而使用 Azure SQL 数据库则无法执行此操作。 但是,只要是 PaaS 服务就会存在一些限制,例如:
- 必须从 URL 终结点还原。 无法访问本地驱动器。
- 你可以使用以下选项(除了指定数据库):
- FILELISTONLY
- HEADERONLY
- LABELONLY
- VERIFYONLY
- 无法还原包含多个日志文件的备份文件
- 无法还原包含多个备份集的备份文件
- 无法还原包含 In-Memory/FILESTREAM 的备份
默认情况下,托管实例中的数据库使用带有 Microsoft 管理的密钥的透明数据加密 (TDE) 进行加密。 为了只接收用户发起的仅复制备份,你必须关闭特定数据库的 TDE。 如果数据库是加密的,你可以还原它,但是,你需要确保可访问用于加密数据库的证书或非对称密钥。 如果你没有这两项中的任何一项,则无法将数据库还原为 SQL 托管实例。
灾难恢复
Azure SQL 托管实例提供自动故障转移组作为实现灾难恢复的一种手段。 此功能保护整个托管实例及其中包含的所有数据库,而不仅仅是特定的数据库。 此过程将数据从 Azure SQL 托管实例异步复制到次要副本;但是,它目前仅限于主副本的配对 Azure 区域,并且只允许一个副本。
与 Azure SQL 数据库非常类似,自动故障转移组提供读写和只读侦听器终结点,便于轻松连接字符串管理。 如果出现故障转移,应用程序连接字符串将自动路由到相应的实例。 虽然与 Azure SQL 数据库相当一致,但这些终结点使用的格式略有不同,它们使用的是 <fog-name>.zone_id.database.windows.net whereas Azure SQL Database is in the <fog-name>.secondary.database.windows.net
格式。
每个托管实例(主实例和辅助实例)必须位于同一 DNS 区域。 这种放置将确保相同的多域证书可用于同一故障转移组中的两个实例中的任何一个之间的客户端连接身份验证。 可通过各种方法(如 Azure 门户、PowerShell 或 Azure CLI)指定“DNS 区域合作伙伴”。
若要了解 Azure SQL 托管实例的新功能,请参阅 Azure SQL 托管实例中的新增功能。