使用区域冗余,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 定价。
按照以下步骤在所选区域中为帐户启用区域冗余。
- Azure 门户
- Azure CLI
按照“ 将区域添加到数据库帐户”中的步骤,将临时区域添加到数据库帐户。
等待新添加的区域标记为 “可用”。
将新区域添加到帐户时,Azure将所有数据复制并提交到新区域中,然后将该区域标记为可用。 此操作所需的时间取决于帐户中存储的数据量。
如果你的 Azure Cosmos DB 帐户配置了多区域写入,请跳到下一步。
否则,请将帐户的写入区域更改为新添加的临时区域。 按照 设置 Azure Cosmos DB 帐户的故障转移优先级中的步骤操作。
按照 从数据库帐户中删除区域 中的步骤,删除要为其启用区域冗余的区域。
添加回启用了区域冗余的区域:
- 将区域添加到数据库帐户。
- 在 “写入区域 ”列中查找新添加的区域,并为该区域启用 可用性区域 。
- 选择“保存”。
等待新添加的区域标记为 “可用”。
将帐户的写入区域更改为新区域冗余区域。 按照 设置 Azure Cosmos DB 帐户的故障转移优先级中的步骤操作。
按照删除数据库帐户的区域中的步骤删除临时区域。