Converta todos os recursos do Azure Cosmos DB de taxa de transferência padrão para taxa de transferência de dimensionamento automático
APLICA-SE A: NoSQL MongoDB Cassandra Gremlin Tabela
O script neste artigo demonstra como converter cada recurso usando a taxa de transferência provisionada padrão para dimensionamento automático dentro de uma assinatura.
Muitos clientes começam com a taxa de transferência provisionada padrão ao desenvolver novos aplicativos. No entanto, a taxa de transferência padrão é melhor usada em cargas de trabalho que têm requisitos de taxa de transferência sustentados. A maioria das cargas de trabalho são variáveis. Isto significa que a escala automática é frequentemente menos dispendiosa de utilizar. Em cenários onde pode haver dezenas ou centenas de recursos para migrar, isso pode ser tedioso e demorado. Este script foi projetado para migrar todos os recursos em uma única etapa.
Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.
Pré-requisitos
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
- Este artigo requer a versão 2.9.1 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.
Script de exemplo
Iniciar o Azure Cloud Shell
O Azure Cloud Shell é um shell interativo gratuito que pode utilizar para executar os passos neste artigo. Tem as ferramentas comuns do Azure pré-instaladas e configuradas para utilização com a sua conta.
Para abrir o Cloud Shell, basta selecionar Experimentar no canto superior direito de um bloco de código. Também pode iniciar o Cloud Shell num separador do browser separado ao aceder a https://shell.azure.com.
Quando o Cloud Shell abrir, verifique se o Bash está selecionado para o seu ambiente. As sessões subsequentes usarão a CLI do Azure em um ambiente Bash, selecione Copiar para copiar os blocos de código, cole-o no Cloud Shell e pressione Enter para executá-lo.
Iniciar sessão no Azure
O Cloud Shell é autenticado automaticamente na conta inicial com a qual entrou conectado. Use o script a seguir para entrar usando uma assinatura diferente, substituindo subscriptionId pela sua ID de assinatura do Azure.
Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.
subscription="subscriptionId" # Set Azure subscription ID here
az account set -s $subscription # ...or use 'az login'
Para obter mais informações, consulte definir assinatura ativa ou fazer login interativamente.
Executar o script
#!/bin/bash
# Passed validation in Cloud Shell on 7/25/2024
# <FullScript>
# Azure Cosmos DB users can migrate from standard provisioned to autoscale
# throughput and back again. Most users can benefit from autoscale throughput
# to save on costs and avoid over-provisioning. This script migrates all
# provisioned throughput to autoscale throughput for all Cosmos DB accounts
# in the current subscription for NoSQL, MongoDB, Cassandra, Gremlin, and Table
# database and container level resources in the accounts.
# These can remain commented out if running in Azure Cloud Shell
#az login
#az account set -s {your subscription id}
throughtput=0
# Get the list of resource groups in the current subscription
resourceGroups=$(az group list --query "[].name" -o tsv)
# Loop through every resource group in the subscription
for resourceGroup in $resourceGroups; do
echo "Processing resource group: $resourceGroup"
# Get the list of Cosmos DB accounts in this resource group
accounts=$(az cosmosdb list -g $resourceGroup --query "[].name" -o tsv)
# Loop through every Cosmos DB account in the resource group
for account in $accounts; do
echo "Processing account: $account"
# Get the list of SQL databases in this account
databases=$(az cosmosdb sql database list -g $resourceGroup -a $account --query "[].name" -o tsv)
# Loop through SQL databases in the account
for database in $databases; do
throughput=$(az cosmosdb sql database throughput show -g $resourceGroup -a $account -n $database --query resource.throughput -o tsv)
if [ $throughput -gt 0 ]; then
echo "$database has throughput, attempting to migrate to autoscale"
# Migrate the database to autoscale throughput
az cosmosdb sql database throughput migrate -g $resourceGroup -a $account -n $database -t "autoscale"
if [ $? -eq 0 ]; then
echo "Successfully migrated throughput for database: $database in Cosmos DB account $account"
fi
else
echo "$database does not have throughput"
fi
# Loop through SQL containers in the database
containers=$(az cosmosdb sql container list -g $resourceGroup -a $account -d $database --query "[].name" -o tsv)
for container in $containers; do
throughput=$(az cosmosdb sql container throughput show -g $resourceGroup -a $account -d $database -n $container --query resource.throughput -o tsv)
if [ $throughput -gt 0 ]; then
echo "$container has throughput, attempting to migrate to autoscale"
# Migrate the container to autoscale throughput
az cosmosdb sql container throughput migrate -g $resourceGroup -a $account -d $database -n $container -t "autoscale"
if [ $? -eq 0 ]; then
echo "Successfully migrated throughput for container: $container in Cosmos DB account $account and database $database"
fi
else
echo "$container does not have throughput"
fi
done
done
# Get the list of MongoDB databases in this account
databases=$(az cosmosdb mongodb database list -g $resourceGroup -a $account --query "[].name" -o tsv)
# Loop through MongoDB databases in the account
for database in $databases; do
throughput=$(az cosmosdb mongodb database throughput show -g $resourceGroup -a $account -n $database --query resource.throughput -o tsv)
if [ $throughput -gt 0 ]; then
echo "$database has throughput, attempting to migrate to autoscale"
# Migrate the database to autoscale throughput
az cosmosdb mongodb database throughput migrate -g $resourceGroup -a $account -n $database -t "autoscale"
if [ $? -eq 0 ]; then
echo "Successfully migrated throughput for database: $database in Cosmos DB account $account"
fi
else
echo "$database does not have throughput"
fi
# Loop through MongoDB collections in the database
collections=$(az cosmosdb mongodb collection list -g $resourceGroup -a $account -d $database --query "[].name" -o tsv)
for collection in $collections; do
throughput=$(az cosmosdb mongodb collection throughput show -g $resourceGroup -a $account -d $database -n $collection --query resource.throughput -o tsv)
if [ $throughput -gt 0 ]; then
echo "$collection has throughput, attempting to migrate to autoscale"
# Migrate the collection to autoscale throughput
az cosmosdb mongodb collection throughput migrate -g $resourceGroup -a $account -d $database -n $collection -t "autoscale"
if [ $? -eq 0 ]; then
echo "Successfully migrated throughput for collection: $collection in Cosmos DB account $account and database $database"
fi
else
echo "$collection does not have throughput"
fi
done
done
# Get the list of Cassandra keyspaces in this account
keyspaces=$(az cosmosdb cassandra keyspace list -g $resourceGroup -a $account --query "[].name" -o tsv)
# Loop through Cassandra keyspaces in the account
for keyspace in $keyspaces; do
throughput=$(az cosmosdb cassandra keyspace throughput show -g $resourceGroup -a $account -n $keyspace --query resource.throughput -o tsv)
if [ $throughput -gt 0 ]; then
echo "$keyspace has throughput, attempting to migrate to autoscale"
# Migrate the keyspace to autoscale throughput
az cosmosdb cassandra keyspace throughput migrate -g $resourceGroup -a $account -n $keyspace -t "autoscale"
if [ $? -eq 0 ]; then
echo "Successfully migrated throughput for keyspace: $keyspace in Cosmos DB account $account"
fi
else
echo "$keyspace does not have throughput"
fi
# Loop through Cassandra tables in the keyspace
tables=$(az cosmosdb cassandra table list -g $resourceGroup -a $account -k $keyspace --query "[].name" -o tsv)
for table in $tables; do
throughput=$(az cosmosdb cassandra table throughput show -g $resourceGroup -a $account -k $keyspace -n $table --query resource.throughput -o tsv)
if [ $throughput -gt 0 ]; then
echo "$table has throughput, attempting to migrate to autoscale"
# Migrate the table to autoscale throughput
az cosmosdb cassandra table throughput migrate -g $resourceGroup -a $account -k $keyspace -n $table -t "autoscale"
if [ $? -eq 0 ]; then
echo "Successfully migrated throughput for table: $table in Cosmos DB account $account and keyspace $keyspace"
fi
else
echo "$table does not have throughput"
fi
done
done
# Get the list of Gremlin databases in this account
databases=$(az cosmosdb gremlin database list -g $resourceGroup -a $account --query "[].name" -o tsv)
# Loop through Gremlin databases in the account
for database in $databases; do
throughput=$(az cosmosdb gremlin database throughput show -g $resourceGroup -a $account -n $database --query resource.throughput -o tsv)
if [ $throughput -gt 0 ]; then
echo "$database has throughput, attempting to migrate to autoscale"
# Migrate the database to autoscale throughput
az cosmosdb gremlin database throughput migrate -g $resourceGroup -a $account -n $database -t "autoscale"
if [ $? -eq 0 ]; then
echo "Successfully migrated throughput for database: $database in Cosmos DB account $account"
fi
else
echo "$database does not have throughput"
fi
# Loop through Gremlin graphs in the database
graphs=$(az cosmosdb gremlin graph list -g $resourceGroup -a $account -d $database --query "[].name" -o tsv)
for graph in $graphs; do
throughput=$(az cosmosdb gremlin graph throughput show -g $resourceGroup -a $account -d $database -n $graph --query resource.throughput -o tsv)
if [ $throughput -gt 0 ]; then
echo "$graph has throughput, attempting to migrate to autoscale"
# Migrate the graph to autoscale throughput
az cosmosdb gremlin graph throughput migrate -g $resourceGroup -a $account -d $database -n $graph -t "autoscale"
if [ $? -eq 0 ]; then
echo "Successfully migrated throughput for graph: $graph in Cosmos DB account $account and database $database"
fi
else
echo "$graph does not have throughput"
fi
done
done
# Get the list of Table databases in this account
tables=$(az cosmosdb table list -g $resourceGroup -a $account --query "[].name" -o tsv)
# Loop through Table databases in the account
for table in $tables; do
throughput=$(az cosmosdb table throughput show -g $resourceGroup -a $account -n $table --query resource.throughput -o tsv)
if [ $throughput -gt 0 ]; then
echo "$table has throughput, attempting to migrate to autoscale"
# Migrate the table to autoscale throughput
az cosmosdb table throughput migrate -g $resourceGroup -a $account -n $table -t "autoscale"
if [ $? -eq 0 ]; then
echo "Successfully migrated throughput for table: $table in Cosmos DB account $account"
fi
else
echo "$table does not have throughput"
fi
done
done
done
echo "All Done! Enjoy your new autoscale throughput Cosmos DB accounts!"
# </FullScript>
Referência de exemplo
Este script utiliza os seguintes comandos. Cada comando na tabela liga à documentação específica do comando.
Comando | Notas |
---|---|
Lista de grupos AZ | Lista todos os grupos de recursos em uma assinatura do Azure. |
az cosmosdb lista | Lista todas as contas do Azure Cosmos DB em um grupo de recursos. |
Lista de banco de dados SQL AZ CosmosDB | Lista todos os bancos de dados NoSQL em uma conta. |
AZ CosmosDB SQL Database Throughput Show | Leia o valor da taxa de transferência para o banco de dados NoSQL em uma conta. |
Migração da taxa de transferência do banco de dados SQL AZ CosmosDB | Migre a taxa de transferência para o recurso de banco de dados NoSQL. |
az cosmosdb sql lista de contêineres | Lista todos os contêineres NoSQL em um banco de dados. |
AZ CosmosDB SQL Container Throughput show | Leia o valor da taxa de transferência para o contêiner NoSQL em uma conta. |
Migração de taxa de transferência de contêiner SQL do AZ CosmosDB | Migre a taxa de transferência para um contêiner NoSQL em uma conta. |
Lista de bases de dados AZ Cosmosdb MongoDB | Lista todos os bancos de dados MongoDB em uma conta. |
AZ CosmosDB MongoDB Taxa de transferência do banco de dados show | Leia o valor da taxa de transferência do banco de dados MongoDB em uma conta. |
Migração da taxa de transferência do banco de dados AZ CosmosDB MongoDB | Migre a taxa de transferência de um recurso de banco de dados na conta do MongoDB. |
Lista de coleções AZ Cosmosdb MongoDB | Lista todas as coleções do MongoDB em um banco de dados. |
AZ Cosmosdb MongoDB Collection Throughput Show | Leia o valor da taxa de transferência para a coleção MongoDB em uma conta. |
Migração da taxa de transferência da coleção AZ Cosmosdb MongoDB | Migre a taxa de transferência de um recurso de coleta na conta do MongoDB. |
az cosmosdb cassandra keyspace lista | Lista todos os keyspaces Cassandra em uma conta. |
AZ Cosmosdb Cassandra Keyspace Throughput Show | Leia o valor da taxa de transferência para o keyspace Cassandra em uma conta. |
az cosmosdb cassandra keyspace throughput migrar | Migre a taxa de transferência para um keyspace Cassandra na conta. |
az cosmosdb cassandra lista de tabelas | Lista todas as tabelas Cassandra em um espaço de chave. |
AZ Cosmosdb Cassandra Tabela Throughput Show | Leia o valor da taxa de transferência para a tabela Cassandra em uma conta. |
az cosmosdb cassandra tabela throughput migrar | Migre a taxa de transferência de uma tabela cassandra em uma conta. |
lista de banco de dados az cosmosdb gremlin | Lista todos os bancos de dados Gremlin em uma conta. |
AZ CosmosDB Gremlin Taxa de transferência do banco de dados show | Leia o valor da taxa de transferência para o banco de dados Gremlin em uma conta. |
Migração da taxa de transferência do banco de dados AZ CosmosDB Gremlin | Migre a taxa de transferência para o recurso de banco de dados Gremlin. |
az cosmosdb gremlin lista de contêineres | Lista todos os gráficos Gremlin em um banco de dados. |
AZ CosmosDB Gremlin Container Throughput Show | Leia o valor da taxa de transferência para o gráfico Gremlin em uma conta. |
Migração da taxa de transferência do gráfico GREMLin do AZ CosmosDB | Migre a taxa de transferência de um gráfico Gremlin em uma conta. |
az cosmosdb lista de tabelas | Lista todas as Tabelas de uma conta. |
show de taxa de transferência da tabela az cosmosdb | Leia o valor da taxa de transferência da tabela em uma conta. |
Migração da taxa de transferência da tabela AZ CosmosDB | Migre a taxa de transferência de uma tabela em uma conta. |
Próximos passos
Para obter mais informações sobre a CLI do Azure Cosmos DB, consulte a documentação da CLI do Azure Cosmos DB.
Para exemplos de CLI do Azure para APIs específicas, consulte: