Conversión de cada uno de los recursos de Azure Cosmos DB de rendimiento estándar a rendimiento de escalado automático
SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table
El script de este artículo muestra cómo convertir todos los recursos que usan el rendimiento aprovisionado estándar en escalado automático en una suscripción.
Muchos clientes comienzan con el rendimiento aprovisionado estándar al desarrollar nuevas aplicaciones. Sin embargo, el rendimiento estándar se usa mejor en las cargas de trabajo que tienen requisitos de rendimiento sostenidos. La mayoría de las cargas de trabajo son variables. Esto significa que la escalabilidad automática suele ser menos costosa de usar. En escenarios en los que puede haber decenas o cientos de recursos para migrar, esto puede ser tedioso y lento. Este script está diseñado para migrar todos los recursos en un solo paso.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Requisitos previos
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
- En este artículo se necesita la versión 2.9.1 de la CLI de Azure o cualquier versión posterior. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.
Script de ejemplo
Inicio de Azure Cloud Shell
Azure Cloud Shell es un shell interactivo gratuito que puede usar para ejecutar los pasos de este artículo. Tiene las herramientas comunes de Azure preinstaladas y configuradas para usarlas en la cuenta.
Para abrir Cloud Shell, seleccione Pruébelo en la esquina superior derecha de un bloque de código. También puede ir a https://shell.azure.com para iniciar Cloud Shell en una pestaña independiente del explorador.
Cuando se abra Cloud Shell, compruebe que Bash está seleccionado para el entorno. En las sesiones siguientes se usará la CLI de Azure en un entorno de Bash, seleccione Copiar para copiar los bloques de código, péguelos en Cloud Shell y, luego, presione Entrar para ejecutarlos.
Inicio de sesión en Azure
Cloud Shell se autentica de forma automática en la cuenta inicial con la que ha iniciado sesión. Use el script siguiente para iniciar sesión con otra suscripción, y reemplace <Subscription ID>
con el id. de la suscripción de Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
subscription="<subscriptionId>" # add subscription here
az account set -s $subscription # ...or use 'az login'
Para más información, vea Establecimiento de la suscripción activa o Inicio de sesión de forma interactiva
Ejecute el 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>
Referencia de ejemplo
Este script usa los siguientes comandos. Cada comando de la tabla crea un vínculo a documentación específica del comando.
Get-Help | Notas |
---|---|
az group list | Enumera todos los grupos de recursos de una suscripción de Azure. |
az cosmosdb list | Enumera todas las cuentas de Azure Cosmos DB de un grupo de recursos. |
Lista de bases de datos de SQL de Azure Cosmos DB | Enumera todas las bases de datos NoSQL de una cuenta. |
az cosmosdb sql database throughput show | Lea el valor de rendimiento de la base de datos NoSQL de una cuenta. |
az cosmosdb sql database throughput migrate | Migre el rendimiento del recurso de base de datos NoSQL. |
Lista de contenedores de SQL de Azure Cosmos DB | Enumera todos los contenedores NoSQL de una base de datos. |
az cosmosdb sql container throughput show | Lea el valor de rendimiento del contenedor NoSQL en una cuenta. |
az cosmosdb sql container throughput migrate | Migre el rendimiento de un contenedor NoSQL en una cuenta. |
Lista de bases de datos de MongoDB de Azure Cosmos DB | Enumera todas las bases de datos de MongoDB de una cuenta. |
az cosmosdb mongodb database throughput show | Lea el valor de rendimiento de la base de datos de MongoDB en una cuenta. |
az cosmosdb mongodb database throughput migrate | Migre el rendimiento de un recurso de base de datos en la cuenta de MongoDB. |
Lista de colecciones de MongoDB de Azure Cosmos DB | Enumera todas las colecciones de MongoDB de una base de datos. |
az cosmosdb mongodb collection throughput show | Lea el valor de rendimiento de la colección de MongoDB en una cuenta. |
az cosmosdb mongodb collection throughput migrate | Migre el rendimiento de un recurso de recopilación en la cuenta de MongoDB. |
Lista de espacios de claves de Cassandra de Cosmos DB | Enumera todos los espacios de claves de Cassandra en una cuenta. |
az cosmosdb cassandra keyspace throughput show | Lea el valor de rendimiento del espacio de claves de Cassandra en una cuenta. |
az cosmosdb cassandra keyspace throughput migrate | Migre el rendimiento de un espacio de claves de Cassandra en la cuenta. |
Lista de tablas de Cassandra de Azure Cosmos DB | Enumera todas las tablas de Cassandra de un espacio de claves. |
az cosmosdb cassandra table throughput show | Lea el valor de rendimiento de la tabla Cassandra en una cuenta. |
az cosmosdb cassandra table throughput migrate | Migre el rendimiento de una tabla de Cassandra en una cuenta. |
Lista de bases de datos de Gremlin de Azure Cosmos DB | Enumera todas las bases de datos de Gremlin de una cuenta. |
az cosmosdb gremlin database throughput show | Lea el valor de rendimiento de la base de datos de Gremlin en una cuenta. |
az cosmosdb gremlin database throughput migrate | Migre el rendimiento del recurso de base de datos de Gremlin. |
Lista de contenedores de Gremlin de Azure Cosmos DB | Enumera todos los gráficos de Gremlin de una base de datos. |
Muestra del rendimiento de contenedores de Gremlin de Azure Cosmos DB | Lea el valor de rendimiento del grafo de Gremlin en una cuenta. |
az cosmosdb gremlin graph throughput migrate | Migre el rendimiento de un grafo de Gremlin en una cuenta. |
Lista de tablas de Azure Cosmos DB | Enumera todas las tablas de una cuenta. |
az cosmosdb table throughput show | Lea el valor de rendimiento de la tabla de una cuenta. |
az cosmosdb table throughput migrate | Migre el rendimiento de una tabla de una cuenta. |
Pasos siguientes
Para más información, consulte la documentación de la CLI de Azure Cosmos DB.
Si desea ver ejemplos de la CLI de Azure para API específicas, consulte: