你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:Azure SQL 托管实例
本文概述了管理 Azure SQL 托管实例时发生的不同作。 管理作是在创建、更新或删除实例时在后端执行的作。
有关每个管理作的步骤和估计持续时间的详细说明,请查看 管理作持续时间。
什么是管理操作?
管理 Azure SQL 托管实例涉及以下作:
- 创建:首次创建新的 SQL 托管实例时发生的作。 这包括创建基础虚拟机(VM)组,以及部署 SQL 数据库引擎进程。
- 更新:更改现有 SQL 托管实例的属性(例如缩放计算或存储、更改服务层或更新实例配置)时发生的作。 进行更新通常涉及调整 VM 组的大小以及种子设定数据,然后故障转移到新的 SQL 数据库引擎进程。
- 删除:删除现有 SQL 托管实例时发生的作,包括清理与实例关联的 VM 组等资源。
有关每个管理作的步骤和估计持续时间的详细说明,请查看 管理作持续时间。
SQL 托管实例管理作是通过以下基础过程完成的:
- 虚拟机(VM)组作:涉及创建和管理托管 SQL 托管实例的基础 VM 组的作。 这包括调整 VM 组的大小、创建新 VM 组和管理这些组中的虚拟机。
- 种子设定:跨 SQL 数据库引擎进程初始化和同步数据,通常要准备故障转移。
- 故障转移:将流量故障转移到另一个 SQL 数据库引擎进程(在同一 VM 组或新 VM 组中)所涉及的作。
VM 组作
为了支持 Azure 虚拟网络中的部署并为客户提供隔离和安全性,SQL 托管实例依赖于虚拟群集。 虚拟群集表示一组专用的独立虚拟机(VM)部署在虚拟网络子网中,并在 VM 组中组织。 实质上,部署到空子网的每个 SQL 托管实例都会生成第一个 VM 组的新虚拟群集。
SQL 托管实例上的后续管理作可能会影响基础 VM 组。 影响基础 VM 组的更改可能会影响管理作的持续时间,因为将更多虚拟机部署到虚拟群集会产生在计划新部署或现有实例更新时需要考虑的开销。
有关虚拟群集体系结构的详细信息,请参阅 虚拟群集体系结构。
播种
种子设定在 Azure SQL 托管实例的作中起着关键作用,尤其是在设置和复制数据库期间。 种子设定是跨 SQL 数据库引擎进程初始化和同步数据的过程,这是实例管理的关键部分。 虽然种子设定通常是耗时最长但最成功的作步骤,但种子设定是建立正常且功能正常的 SQL 托管实例环境的基石。
有关种子设定作的估计持续时间,请参阅 管理作持续时间。
种子设定过程通常涉及以下阶段,而不考虑服务层级:
- 初始化:系统标识源数据库和目标数据库,并启动许多任务,这些任务为数据传输准备 SQL 数据库引擎进程。
- 数据传输:实际数据包从源传输到目标 SQL 数据库引擎进程,其中包括数据库的完整副本或部分副本,具体取决于方案。
- 同步:初始数据传输完成后,系统会通过事务日志块的复制同步任何后续更新或更改,以确保数据完整性。
- 验证和最终确定:该过程已完成,并验证目标 SQL 数据库引擎进程以确认成功复制和种子设定。 发生故障转移,以便将流量路由到新的 SQL 数据库引擎进程。
除了将服务层级更改为业务关键服务层级时,常规用途服务层级中没有数据种子设定。 常规用途服务层级中的管理作涉及从旧的 SQL 数据库引擎进程分离远程存储并将其附加到新的 SQL 数据库引擎进程。
相反,专为高性能工作负荷设计的 “业务关键 ”服务层级需要本地存储和计算层和存储层的附加性。 因此,此服务层中的几乎所有作和方案都要求进行种子设定,以确保数据可用性和一致性。
是否触发种子设定取决于特定的方案和服务层级,例如:
-
常规用途和下一代常规用途 服务层级:
- 更改为业务关键服务层级 – 必须将数据从远程存储传输到常规用途服务层级中使用的本地存储。
- 启用或禁用 区域冗余 – 数据必须复制到区域冗余区域或从区域冗余区域复制。
-
业务关键 服务层级:
- 缩放存储:由于存储在物理上附加到本地计算机,因此每个存储更改都需要创建新的 VM 组,因此必须将数据从旧计算机传输到新计算机(在所有 4 个副本上)。
- 缩放 vCore:每个计算缩放作都需要创建新的 VM 组,因此必须将数据从旧计算机复制到新计算机(在所有 4 个副本上)。
- 更改硬件或维护时段:如果子网中已存在具有匹配配置的 VM 组,则会调整该 VM 组的大小。 如果这是一个新的配置,则会创建新的 VM 组。 必须将数据从旧 VM 组复制到新 VM 组(在所有 4 个副本上)。
- 更改服务层级:必须将数据从本地存储复制到常规用途服务层级中使用的远程存储。
- 启用或禁用 区域冗余 – 数据必须复制到区域冗余区域或从区域冗余区域复制。
种子设定速度
以下因素会影响种子设定过程的持续时间:
- 数据库大小:较大的数据库需要更多的时间来跨 SQL 数据库引擎进程传输数据并同步。
- 网络依赖关系:网络带宽和延迟可能会显著影响种子设定速度。
- 备份和还原作:源 SQL 数据库引擎进程中正在进行的备份作可能会影响准备数据以发送到另一个 SQL 数据库引擎进程。
- 实例工作负荷:种子设定期间的实例工作负荷可能会导致限制并严重延长进程。
虽然大多数这些因素都无法控制,但你可以管理实例流量,以显著优化种子设定速度。 种子设定使用相同的实例计算资源来管理实例流量。 种子设定过程中的流量可能会降低 vCore 可用性,导致种子设定过程容量不足,从而导致限制。
种子设定期间的高流量可能会影响同步,因为种子设定旨在打包和传输单个作中当前存储的所有数据。 启动种子设定后到达的旧 SQL 数据库引擎进程的后续数据更改必须通过事务日志块复制以增量方式同步到新的 SQL 数据库引擎进程,然后才能进行故障转移。 如果实例负载过大,种子设定可能会难以跟上传入数据,从而导致同步阶段出现延迟和潜在故障。 种子设定开始后,旧 SQL 数据库引擎进程持续高流量可能导致同步阶段永远不会完成的情况,因为新数据不断到达并且必须传输。 这可能会导致数据传输的永久周期,从而防止故障转移到新的 SQL 数据库引擎进程。
有关种子设定作的估计持续时间,请参阅 管理作持续时间。
Azure 基础结构和通知
种子设定是一个无法精确量化或严格预测的过程,因为它依赖于 共享的 Azure 服务。 数据传输和种子设定作取决于整个 Azure 生态系统中共享的各种内部 Azure 服务和基础结构。 这些服务由 Azure 中许多其他不相关的服务使用。 Azure 生态系统中的所有服务都争用可用资源,这会导致受多种因素影响的瞬间可用性波动。 虽然Microsoft可以提供基础结构容量运行的范围,但进行精确的预测是具有挑战性的。
故障转移
实例故障转移是将流量从旧的 SQL 数据库引擎进程路由到包含 SQL 托管实例的 VM 组中节点组中的新 SQL 数据库引擎进程的那一刻。 故障转移是大多数管理作的关键部分,尤其是在更新实例时。 流量重定向到新的 SQL 数据库引擎进程时中断连接的短暂时刻称为 故障转移。
当流量重新路由到新的 SQL 数据库引擎进程时,实例 在故障转移期间才不可用。 在 “业务关键 ”服务层级中,实例最多不可用 20 秒,而在 “常规用途 ”服务层级中,实例最多可以 2 分钟。 由于管理作(如在 业务关键 服务层级中重新分配数据库)而为故障转移做准备而发生的任何后端作都会在后台发生,并且不会影响实例的可用性。
服务层之间的体系结构差异在 可用性方面进行了深入说明。
管理操作交叉影响
SQL 托管实例上的管理作可能会影响放置在同一子网中的其他实例的管理作:
在虚拟群集中长时间运行的还原作将其他作置于同一虚拟群集中,例如创建或缩放作。
例: 如果有长时间运行的还原作,以及收缩 VM 组的缩放请求,则收缩请求需要更长的时间才能完成,因为它等待还原作完成,然后才能继续。
随后的实例创建或缩放 作由以前启动的实例创建或实例缩放保持,该缩放会启动 VM 组的大小。
例: 如果同一 VM 组下的同一子网中有多个创建和/或缩放请求,并且其中一个请求启动 VM 组大小调整,则初始作请求后 5 分钟提交的所有请求将超过预期,因为这些请求必须等待重设大小完成,然后恢复。
在 1 分钟窗口中提交的创建/缩放作 是并行批处理和执行的。
例: 对于在 1 分钟窗口中提交的所有作,只执行一个虚拟群集大小(从提交第一个作请求的那一刻开始测量)。 如果在提交第一个请求后 1 分钟以上提交另一个请求,则它会等待虚拟群集调整大小以在执行开始之前完成。
重要
一旦满足继续作的条件,就会自动恢复因另一个正在进行的作而保持的管理作。 无需任何用户操作即可恢复临时暂停的管理操作。
监控管理操作
若要了解如何监视管理操作进度和状态,请参阅 监视 Azure SQL 托管实例管理操作。
取消管理操作
若要了解如何取消管理操作,请参阅 取消 Azure SQL 托管实例管理操作。