为 Azure SQL 数据库启用区域冗余

适用于:Azure SQL 数据库

本指南介绍如何使用 可用性区域更新 Azure SQL 数据库以实现区域冗余。

为 Azure SQL 数据库启用区域冗余可以保证高可用性,使数据库和弹性池能够复原到更大的故障集,例如灾难性的数据中心中断,而无需更改应用程序逻辑。 启用区域冗余后,数据库会利用可用性区域跨单个 Azure 区域中的多个物理位置复制数据。

先决条件

在启用可用性区域支持之前,请确保 Azure SQL 数据库处于受支持的服务层和部署模型中。 确保您的层级和模型是否是在支持可用性区域的区域中提供的

服务层 部署模型 区域冗余可用性
高级 单一数据库或弹性池 支持可用性区域的所有区域
业务关键 单一数据库或弹性池 支持可用性区域的所有区域
常规用途 单一数据库或弹性池 支持可用性区域的所选区域
超大规模 单一数据库 支持可用性区域的所有区域

停机时间要求

为高级、业务关键和常规用途服务层级启用区域冗余是一项在线操作,不过在操作期间会有短暂的连接中断。 如果 为标准暂时性错误实现了重试逻辑,则不会注意到故障转移。

对于“超大规模”服务层级,区域冗余支持只能在数据库创建期间指定,在预配资源后无法修改。 如果希望迁移到支持可用性区域的系统,则需要通过数据库副本、时间点还原或地理副本来传输数据。 如果目标数据库与源数据库位于不同的区域,或者目标的数据库备份存储冗余与源数据库不同,则停机时间与数据作的大小成正比。

启用区域冗余(高级、业务关键和常规用途)

对于高级、业务关键和常规用途服务层,可以实现区域冗余。

按照以下步骤为单一数据库或弹性池启用区域冗余。

为单一数据库启用区域冗余

  1. 转到 Azure 门户 以查找数据库。 搜索并选择 SQL 数据库

  2. 选择所需的数据库。

  3. “设置” 下,选择 “计算 + 存储”。

  4. 选择 “是,是否要使此数据库区域冗余?

  5. 选择应用

  6. 等待在 Azure 门户顶部菜单中的 “通知 ”中收到作完成通知。

  7. 若要验证区域冗余是否已启用,请选择“ 概述 ”,然后选择“ 属性”。

  8. “可用性 ”部分下,确认区域冗余设置为 “已启用”。

为弹性池启用区域冗余

重要

为弹性池启用区域冗余支持会使池区域中的所有数据库都变得冗余。

  1. 转到 Azure 门户 以查找并选择所需的弹性池。

  2. “设置”下,选择“ 计算 + 存储”。

  3. 对于是否要使此弹性池区域冗余,请选择“是”。。

  4. 选择“保存”

  5. 等待在 Azure 门户顶部菜单中的 “通知 ”中收到作完成通知。

  6. 若要验证是否启用了区域冗余,请选择“ 配置 ”,然后选择“ 池设置”。

  7. 区域冗余选项应设置为 “是”。

重新部署 (超大规模)

对于“超大规模”服务层级,只能在创建数据库期间指定区域冗余支持,在预配数据库后无法修改。 如果想要获得区域冗余支持,则需要从现有的“超大规模”服务层级单一数据库执行数据传输。 若要执行传输并启用区域冗余选项,必须使用数据库副本、时间点还原或异地副本创建克隆。

重新部署注意事项

  • 重新部署有两种模式(联机和脱机):

    • 数据库复制和时间点还原方法(脱机模式)在特定时间点创建事务一致的数据库。 因此,在启动复制或还原作后执行的任何数据更改都不会在复制或还原的数据库上使用。

    • 地理副本方法(联机模式) 是一种重新部署方法,其中会将源中的任何数据更改同步到目标。

  • 必须更新应用程序的连接字符串才能指向区域冗余数据库。

重新部署单一数据库

数据库副本

若要使用 Azure 门户、PowerShell 或 Azure CLI 创建数据库副本并启用区域冗余,请按照在 Azure SQL 数据库中复制数据库事务一致性副本中的说明进行作。

时间点还原

若要使用 Azure 门户、PowerShell 或 Azure CLI 创建时间点数据库还原并启用区域冗余,请按照 时间点还原中的说明进行作。

异地副本

创建数据库的异地副本:

  1. 按照 Azure 门户、PowerShell 或 Azure CLI 中的说明配置活动异地复制和故障转移(Azure SQL 数据库),并在计算 + 存储下启用区域冗余

  2. 副本已完成初始化,数据播种所需的时间取决于源数据库的大小。 可以在 Azure 门户中或通过对副本数据库运行以下 T-SQL 查询来监视初始化的状态:

        SELECT * FROM sys.dm_geo_replication_link_status;
        SELECT * FROM sys.dm_operation_status;
    
  3. 完成数据库初始化后,执行计划内(无数据丢失)故障转移,使区域冗余目标数据库成为主数据库。

    • 使用 sys.dm_geo_replication_link_status 查看异地复制状态的状态。 replication_state_descCATCH_UP当辅助数据库处于事务一致性状态时。
    • sys.dm_operation_status动态管理视图中,查找state_descCOMPLETED的状态,以便确认种子操作已经完成。
  4. 更新应用程序的连接字符串中的服务器名称,以反映新的区域冗余数据库。

  5. 若要清理,请考虑从异地副本关系中删除原始非区域冗余数据库。 可以选择将其删除。

验证区域冗余

可以使用 Azure PowerShell 或 Azure CLI 或 REST API 检查 ZoneRedundant 数据库的属性。

  1. 在 Azure 门户中,导航到 Azure SQL 数据库。
  2. “设置”下,选择“ 计算 + 存储”。
  3. 检查 是否要使此数据库区域冗余? 设置的值。

禁用区域冗余

若要为单一数据库或弹性池禁用区域冗余,可以使用 Azure 门户、ARM API、PowerShell 或 CLI。

为单一数据库禁用区域冗余

  1. 转到 Azure 门户 ,查找并选择不再需要区域冗余的数据库。

  2. “设置”下,选择“ 计算 + 存储”。

  3. 选择“否”以回答“您希望使此数据库具备区域冗余吗?”

  4. 选择“保存”

禁用弹性池的区域冗余

  1. 转到 Azure 门户 ,找到并选择不再需要区域冗余的弹性池。

  2. “设置”下,选择“ 计算 + 存储”。

  3. 选择“否”以回答“您想使此弹性池区域冗余吗?”

  4. 选择“保存”

若要禁用超大规模服务层级的区域冗余,可以反转 重新部署(超大规模)中所述的步骤。