规划在 Azure SQL 数据库和 Azure SQL 托管实例中的 Azure 维护事件

适用于:Azure SQL 数据库Azure SQL 托管实例

了解如何为在 Azure SQL 数据库和 Azure SQL 托管实例中的数据库上执行计划内维护事件做准备。

什么是计划内维护事件?

为了保持 Azure SQL 数据库和 Azure SQL 托管实例服务的安全、合规性、稳定性和高性能,将持续通过服务组件进行更新。 得益于新式可靠的服务体系结构和创新技术(如热修补),大多数更新在服务可用性方面都是完全透明且不会产生不良影响的。 尽管如此,少数类型的更新会导致短暂的服务中断并需要特殊处理。

在计划内维护期间,所维护的数据库副本将进入脱机状态,一次脱机一个,目的是要有一个能够响应的主要副本。 对于业务关键型和高级数据库,还应至少有一个次要副本处于联机状态,确保不发生客户端停机。

当主要副本需要进入脱机状态时,将启动重新配置进程。

  • 对于业务关键型和高级数据库,其中会有一个辅助副本变为新的主要副本。
  • 对于常规用途、标准和基本数据库,主要副本将迁移到具有足够可用容量的另一个无状态计算节点。

计划内维护事件期间会发生什么

维护事件可能产生单个或多个重新配置,具体取决于维护事件开始时主要副本和次要副本的集合。 平均而言,每个计划内维护事件会出现 1.7 个重新配置。 重新配置通常在 30 秒内完成。 平均 8 秒。 如果应用程序处于已连接状态,则必须重新连接至新的数据库主要副本。

如果在尝试进行新的连接时数据库正在进行重新配置,且新的主要副本尚未处于联机状态,则会显示错误 40613(数据库不可用):Database '{databasename}' on server '{servername}' is not currently available. Please retry the connection later. 如果数据库有一个长时间运行的查询,则重新配置期间此查询会中断,需要重启。

维护时段功能

维护时段功能允许配置适用于符合条件的 Azure SQL 数据库和 SQL 托管实例的可预测维护时段计划。 维护时段提前通知适用于配置为使用非默认维护时段的数据库。

  • 对于 Azure SQL 数据库,维护时段和维护时段的提前通知已正式发布。
  • 对于 Azure SQL 托管实例,维护时段已正式发布,但提前通知仍是预览功能

如何模拟计划内维护事件

在部署到生产环境之前,请确保客户端应用程序可复原到维护事件。

测试将可降低应用程序故障的风险,并为最终用户提高应用程序可用性。 可在计划内维护事件期间通过 PowerShell、CLI 或 REST API 测试应用程序的故障复原能力来测试客户端应用程序的行为。

对于 Azure SQL 托管实例,另请参阅启动手动故障转移。 手动故障转移将生成与使主要副本脱机的维护事件相同的行为。

重试逻辑

连接到云数据库服务的任何客户端生产应用程序均应实现一个可靠的连接重试逻辑。 正确的自动重试逻辑有助于使最终用户尽可能透明地进行重新配置。

服务运行状况警报

如果你希望在出现服务问题或计划内维护活动时收到警报,可将 Azure 门户中的服务运行状况警报与相应的事件类型和操作组配合使用。 有关详细信息,请参阅接收有关 Azure 服务通知的警报

资源运行状况

如果数据库发生登录失败的情况,请在 Azure 门户资源运行状况窗口中查看当前状态。 “运行状况历史记录”部分包含每个事件(如果有)的停机原因。