使用 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。
先决条件
需要在 Azure 资源组中有一个现有的 Azure Cosmos DB 帐户。
本脚本要求使用 Azure PowerShell Az 5.4.0 或更高版本。 运行
Get-Module -ListAvailable Az
以列出已安装的版本。 如果需要安装 PowerShell,请参阅安装 Azure PowerShell 模块。运行 Connect-AzAccount -Environment AzureChinaCloud 以登录到 Azure。
示例脚本
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"