使用 PowerShell 更新 Azure Cosmos DB 帐户的区域

适用对象: NoSQL MongoDB Cassandra Gremlin

此 PowerShell 脚本更新 Azure Cosmos DB 帐户使用的 Azure 区域。 可以使用此脚本添加 Azure 区域或更改区域故障转移顺序。

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

先决条件

示例脚本

Update-AzCosmosDBAccountRegion 命令更新 Azure Cosmos DB 帐户的 Azure 区域。 此命令需要资源组名称、Azure Cosmos DB 帐户名以及按所需故障转移顺序排列的 Azure 区域列表。

在此脚本中,Get-AzCosmosDBAccount 命令获取指定的 Azure Cosmos DB 帐户。 New-AzCosmosDBLocationObject 创建类型为 PSLocation 的对象。 Update-AzCosmosDBAccountRegion 使用 PSLocation 参数更新帐户区域。

  • 如果添加区域,请勿在同一操作中更改第一个故障转移区域。 请在单独的操作中更改故障转移优先级顺序。
  • 不能在与更改其他 Azure Cosmos DB 帐户属性相同的操作中修改区域。 请单独执行这些操作。

此示例使用 API for NoSQL 帐户。 若要将此示例用于其他 API,请复制相关属性,并将其应用于 API 特定的脚本。

# Reference: Az.CosmosDB | https://learn.microsoft.com/powershell/module/az.cosmosdb
# --------------------------------------------------
# Purpose
# Update Cosmos DB account: Add an Azure region (location)
# NOTE: if adding a region to a single master account, do not change the first 
# region in the same operation. Change failover priority order in a
# separate operation.
# NOTE: this operation will return, but account updates may still be
# occurring. Check the account or Resource Group's activity log for status.
# --------------------------------------------------
# Variables - ***** SUBSTITUTE YOUR VALUES *****
$resourceGroupName = "myResourceGroup" # Resource Group must already exist
$accountName = "myaccount" # Must be all lower case

# Regions ordered by failover priority, with each indicating whether AZ-enabled
# Region AZ status can be checked at https://azure.microsoft.com/global-infrastructure/regions/
$locations = @(
    @{name = "China East"; azEnabled = $true};
    @{name = "China North"; azEnabled = $false};
)
# --------------------------------------------------

Write-Host "Get Cosmos DB account"
$account = Get-AzCosmosDBAccount -ResourceGroupName $resourceGroupName -Name $accountName

$i = 0
$locationObjects = @()

ForEach ($location in $locations) {
    $locationObjects += New-AzCosmosDBLocationObject -LocationName $location.name -IsZoneRedundant $location.azEnabled -FailoverPriority ($i++)
}

Write-Host "Update Cosmos DB account region(s)"
Update-AzCosmosDBAccountRegion -InputObject $account -LocationObject $locationObjects

尽管脚本返回结果,但更新操作可能尚未完成。 使用 Azure Cosmos DB 帐户活动日志,在 Azure 门户中检查操作的状态。

删除 Azure 资源组

如果要删除 Azure Cosmos DB 帐户,可以使用 Remove-AzResourceGroup PowerShell 命令删除其资源组。 此命令将删除 Azure 资源组及其中的所有资源,包括 Azure Cosmos DB 帐户及其容器和数据库。

Remove-AzResourceGroup -ResourceGroupName "myResourceGroup"

后续步骤