如何用PowerShell检查Azure Cosmos DB是否启用自动缩放
Cosmos DB自动缩放检查与自动开启PowerShell实现
所有Az.CosmosDB模块下的吞吐量查询命令返回的对象,都可以通过AutoscaleSettings属性判断自动缩放状态:
- 若该属性非空、且MaxThroughput字段存在有效值,代表已开启自动缩放
- 若该属性为空、仅存在固定Throughput字段值,代表当前为手动吞吐量模式,未开启自动缩放
前置准备
执行脚本前先完成环境准备:
# 安装Az.CosmosDB模块(已安装可跳过) Install-Module -Name Az.CosmosDB -Force -AllowClobber # 登录Azure账号 Connect-AzAccount # 切换到目标订阅 Select-AzSubscription -SubscriptionId "<替换为你的订阅ID>"
完整可运行脚本
# -------------------------- 参数配置区 -------------------------- $resourceGroupName = "<替换为目标资源组名称>" $cosmosAccountName = "<替换为Cosmos DB账号名称>" $databaseName = "<替换为目标数据库名称>" # 若要检查容器级吞吐量,填写容器名;留空则检查数据库级吞吐量 $containerName = "" # 自动缩放最大吞吐量配置,合法值为4000及以上,步长1000 $autoscaleMaxThroughput = 4000 # ---------------------------------------------------------------- # 获取当前吞吐量配置 if ([string]::IsNullOrEmpty($containerName)) { $throughputConfig = Get-AzCosmosDBSqlDatabaseThroughput ` -ResourceGroupName $resourceGroupName ` -AccountName $cosmosAccountName ` -Name $databaseName $targetResource = "数据库 $databaseName" } else { $throughputConfig = Get-AzCosmosDBSqlContainerThroughput ` -ResourceGroupName $resourceGroupName ` -AccountName $cosmosAccountName ` -DatabaseName $databaseName ` -Name $containerName $targetResource = "容器 $databaseName/$containerName" } # 检查自动缩放状态并执行对应操作 if ($null -ne $throughputConfig.AutoscaleSettings -and $throughputConfig.AutoscaleSettings.MaxThroughput -gt 0) { Write-Host "$targetResource 已启用自动缩放,当前配置最大吞吐量为 $($throughputConfig.AutoscaleSettings.MaxThroughput) RU/s,无需操作" } else { Write-Host "$targetResource 当前为手动吞吐量模式,固定吞吐量为 $($throughputConfig.Throughput) RU/s,正在开启自动缩放..." # 调用更新命令开启自动缩放 if ([string]::IsNullOrEmpty($containerName)) { Update-AzCosmosDBSqlDatabaseThroughput ` -ResourceGroupName $resourceGroupName ` -AccountName $cosmosAccountName ` -Name $databaseName ` -AutoscaleMaxThroughput $autoscaleMaxThroughput } else { Update-AzCosmosDBSqlContainerThroughput ` -ResourceGroupName $resourceGroupName ` -AccountName $cosmosAccountName ` -DatabaseName $databaseName ` -Name $containerName ` -AutoscaleMaxThroughput $autoscaleMaxThroughput } Write-Host "操作完成,$targetResource 已成功开启自动缩放,最大吞吐量设置为 $autoscaleMaxThroughput RU/s" }
适配说明
- 上述脚本默认针对Core(SQL) API编写,若使用MongoDB、Gremlin、Cassandra等其他API,只需将命令中的
Sql关键字替换为对应API的命令关键字即可,状态判断逻辑完全通用 - 手动吞吐量切换为自动缩放为在线操作,不会造成业务中断
- 执行脚本的账号至少需要拥有Cosmos DB参与者权限,才能完成吞吐量修改操作
- 若当前手动吞吐量设置低于400RU/s,开启自动缩放时会自动适配到最小阈值,无需额外调整
内容的提问来源于stack exchange,提问作者weewoo
相关产品推荐
相关产品推荐

