在Azure Cosmos DB帐户上启用区域冗余

使用区域冗余,Azure Cosmos DB智能地跨多个可用性区域分发数据的四个副本。 这可确保在发生一个区域中的服务中断时,帐户仍可完全正常运行。 相比之下,如果没有区域冗余,所有副本都可能位于单个可用性区域中(我们不会公开哪个副本),因此,如果特定区域遇到问题,则可能会导致潜在的停机。 启用区域冗余是提高 Cosmos DB 数据库的复原能力,而无需引入额外的应用程序复杂性、影响性能甚至产生额外成本(如果使用自动缩放)的一种好方法。 有关详细信息,请参阅 可用性Azure Cosmos DB - 可用性区域故障复原能力

启用区域冗余不是帐户范围的选择。 单个 Cosmos DB 帐户可以跨越任意数量的Azure区域,每个区域都可以单独配置为启用区域冗余。 某些区域不提供可用性区域支持。 这一点很重要,因为某些区域尚不支持可用性区域,但将它们添加到Azure Cosmos DB帐户不会阻止在该帐户配置的其他区域中启用区域冗余。

Note

如果在部署期间收到指示区域受限且无法启用区域冗余的错误, 请打开支持请求 以请求区域中的容量。

先决条件

在配置区域冗余之前,请查看 可用性Azure Cosmos DB中所列的要求和详细信息- 可用性区域故障复原能力

创建新的区域冗余帐户

创建新的Azure Cosmos DB帐户时,可以使用以下说明在一个或多个区域配置区域冗余:

  • Azure 门户。 部署时,将 可用性区域 设置设置为 Enabled
  • Azure CLI。 设置 --locations 参数时,请为要配置为区域冗余的区域设置 isZoneRedundant=True
  • Bicep. 将要设为区域冗余的区域的 isZoneRedundant 属性更新为 true
  • Azure 资源管理器 模板。 对于要设为区域冗余的区域,将 isZoneRedundant 属性更新为 true

在现有帐户上启用区域冗余

无法在已添加到帐户的区域中启用区域冗余,因此需要删除该区域,并在启用了区域冗余的情况下再次添加该区域。 为避免任何服务中断,请添加一个临时区域,并将故障转移到该区域,直到区域冗余配置完成。

Important

按照本文中所述的过程进行操作时,添加和删除次要区域时会发生少量的写入不可用(几秒钟),因为系统故意停止写入以检查区域之间的一致性。

此外,你还需要承担次要区域和数据复制的费用。 区域冗余帐户按不同的费率收费。 有关详细信息,请参阅 Azure Cosmos DB 定价

按照以下步骤在所选区域中为帐户启用区域冗余。

  1. 按照“ 将区域添加到数据库帐户”中的步骤,将临时区域添加到数据库帐户。

  2. 等待新添加的区域标记为 “可用”。

    将新区域添加到帐户时,Azure将所有数据复制并提交到新区域中,然后将该区域标记为可用。 此操作所需的时间取决于帐户中存储的数据量。

  3. 如果你的 Azure Cosmos DB 帐户配置了多区域写入,请跳到下一步。

    否则,请将帐户的写入区域更改为新添加的临时区域。 按照 设置 Azure Cosmos DB 帐户的故障转移优先级中的步骤操作。

  4. 按照 从数据库帐户中删除区域 中的步骤,删除要为其启用区域冗余的区域。

  5. 添加回启用了区域冗余的区域:

    1. 将区域添加到数据库帐户
    2. “写入区域 ”列中查找新添加的区域,并为该区域启用 可用性区域
    3. 选择“保存”
  6. 等待新添加的区域标记为 “可用”。

  7. 将帐户的写入区域更改为新区域冗余区域。 按照 设置 Azure Cosmos DB 帐户的故障转移优先级中的步骤操作。

  8. 按照删除数据库帐户的区域中的步骤删除临时区域。