使用 Azure CLI 为 Azure Cosmos DB 帐户添加区域、更改故障转移优先级、触发故障转移
适用对象: NoSQL MongoDB Cassandra Gremlin 表
本文中的脚本演示了三个操作。
- 将区域添加到现有 Azure Cosmos DB 帐户。
- 更改区域故障转移优先级(适用于使用服务托管的故障转移的帐户)
- 触发从主要区域到次要区域的手动故障转移(适用于使用手动故障转移的帐户)
此脚本使用 NoSQL API 帐户,但这些操作在 Azure Cosmos DB 中的所有数据库 API 中都是相同的。
重要
更改其他属性时,无法在 Azure Cosmos DB 帐户上添加和删除区域操作。
如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅。
先决条件
可以使用本地 Azure CLI。
如果需要,请安装 Azure CLI 来运行 CLI 参考命令。
本地 Azure CLI,请了解如何安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
通过使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
本文需要 Azure CLI 版本 2.9.1 或更高版本。
注意
在可以在由世纪互联运营的 Microsoft Azure 中使用 Azure CLI 之前,请先运行
az cloud set -n AzureChinaCloud
来更改云环境。 若要切换回 Azure 公有云,请再次运行az cloud set -n AzureCloud
。
示例脚本
登录 Azure
使用以下脚本通过其他订阅登录,将 <Subscription ID>
替换为 Azure 订阅 ID。 如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅。
az cloud set -n AzureChinaCloud
az login
subscription="<subscriptionId>" # add subscription here
az account set -s $subscription # ...or use 'az login'
运行脚本
# Region replica operations for an Azure Cosmos account
# Note: Azure Comos accounts cannot include updates to regions with changes to other properties in the same operation
Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
location="chinaeast2"
failoverLocation1="chinanorth2"
failoverLocation2="chinanorth3"
resourceGroup="msdocs-cosmosdb-rg-$randomIdentifier"
tag="regions-cosmosdb"
account="msdocs-account-cosmos-$randomIdentifier" #needs to be lower case
# Create a resource group
echo "Creating $resourceGroup in $location..."
az group create --name $resourceGroup --location "$location" --tags $tag
# Create a Cosmos DB account with default values
# Use appropriate values for --kind or --capabilities for other APIs
echo "Creating $account for CosmosDB"
az cosmosdb create --name $account --resource-group $resourceGroup
# Specify region failover locations and priorities
echo "Adding $failoverLocation1 and $failoverLocation2"
az cosmosdb update --name $account --resource-group $resourceGroup --locations regionName="$location" failoverPriority=0 isZoneRedundant=False --locations regionName="$failoverLocation1" failoverPriority=1 isZoneRedundant=False --locations regionName="$failoverLocation2" failoverPriority=2 isZoneRedundant=False
# Make failoverLocation2 the next region to fail over to instead of failoverLocation1
echo "Switching failover priority"
az cosmosdb failover-priority-change --name $account --resource-group $resourceGroup --failover-policies "$location=0" "$failoverLocation1=2" "$failoverLocation2=1"
# Initiate a manual failover and promote failoverLocation1 as primary write region
echo "Failing over to $failoverLocation1"
az cosmosdb failover-priority-change --name $account --resource-group $resourceGroup --failover-policies "$location=2" "$failoverLocation1=0" "$failoverLocation2=1"
清理资源
使用 az group delete 命令删除资源组以及与其关联的所有资源 - 除非你持续需要这些资源。 其中一些资源在创建和删除时可能要稍等片刻。
az group delete --name $resourceGroup
示例参考
此脚本使用以下命令。 表中的每条命令均链接到特定于命令的文档。
命令 | 说明 |
---|---|
az group create | 创建用于存储所有资源的资源组。 |
az cosmosdb create | 创建 Azure Cosmos DB 帐户。 |
az cosmosdb update | 更新 Azure Cosmos DB 帐户(添加或删除区域)。 |
az cosmosdb failover-priority-change | 在 Azure Cosmos DB 帐户上更新故障转移优先级或触发故障转移。 |
az group delete | 删除资源组,包括所有嵌套的资源。 |
后续步骤
有关 Azure Cosmos DB CLI 的详细信息,请参阅 Azure Cosmos DB CLI 文档。
有关特定 API 的 Azure CLI 示例,请参见: