Konvertieren aller Azure Cosmos DB-Ressourcen von Standarddurchsatz in automatisch skalierten Durchsatz
GILT FÜR: NoSQL MongoDB Cassandra Gremlin Tabelle
Das Skript in diesem Artikel veranschaulicht, wie jede Ressource mit standardmäßig bereitgestelltem Durchsatz innerhalb eines Abonnements in eine Ressource mit automatisch skaliertem Durchsatz konvertiert wird.
Viele Kunden beginnen bei der Entwicklung neuer Anwendungen mit standardmäßig bereitgestelltem Durchsatz. Der Standarddurchsatz wird jedoch am besten in Workloads verwendet, die Anforderungen an kontinuierlichen Durchsatz aufweisen. Die meisten Workloads sind variabel. Das bedeutet, dass die Autoskalierung oft günstiger ist. In Szenarien, in denen Dutzende oder Hunderte Ressourcen migriert werden müssen, kann dies mühsam und zeitaufwändig sein. Dieses Skript wurde entwickelt, um alle Ressourcen in einem einzigen Schritt zu migrieren.
Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.
Voraussetzungen
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.
Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
- Für diesen Artikel ist mindestens Version 2.9.1 der Azure CLI erforderlich. Bei Verwendung von Azure Cloud Shell ist die aktuelle Version bereits installiert.
Beispielskript
Starten von Azure Cloud Shell
Azure Cloud Shell ist eine kostenlose interaktive Shell, mit der Sie die Schritte in diesem Artikel durchführen können. Sie verfügt über allgemeine vorinstallierte Tools und ist für die Verwendung mit Ihrem Konto konfiguriert.
Wählen Sie zum Öffnen von Cloud Shell oben rechts in einem Codeblock einfach die Option Ausprobieren. Sie können Cloud Shell auch auf einem separaten Browsertab starten, indem Sie zu https://shell.azure.com navigieren.
Überprüfen Sie nach dem Öffnen von Cloud Shell, ob Bash für Ihre Umgebung ausgewählt ist. In den folgenden Sitzungen wird die Azure CLI in einer Bash-Umgebung verwendet. Wählen Sie Kopieren aus, um die Codeblöcke zu kopieren. Fügen Sie sie in Cloud Shell ein, und drücken Sie die EINGABETASTE, um sie auszuführen.
Anmelden bei Azure
Cloud Shell wird automatisch unter dem Konto authentifiziert, mit dem die Anmeldung anfänglich erfolgt ist. Verwenden Sie das folgende Skript, um sich mit einem anderen Abonnement anzumelden, und ersetzen Sie <Subscription ID>
durch Ihre Azure-Abonnement-ID. Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.
subscription="<subscriptionId>" # add subscription here
az account set -s $subscription # ...or use 'az login'
Weitere Informationen finden Sie unter Festlegen der aktiven Subscription oder unter Interaktives Anmelden
Führen Sie das Skript aus.
#!/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>
Beispielreferenz
Das Skript verwendet die folgenden Befehle. Jeder Befehl in der Tabelle ist mit der zugehörigen Dokumentation verknüpft.
Get-Help | Notizen |
---|---|
az group list | Listet alle Ressourcengruppen in einem Azure-Abonnement auf. |
az cosmosdb list | Auflisten aller Azure Cosmos DB-Konten in einer Ressourcengruppe |
az cosmosdb sql database list | Auflisten aller NoSQL-Datenbanken in einem Konto |
az cosmosdb sql database throughput show | Lesen des Durchsatzwerts für die NoSQL-Datenbank in einem Konto |
az cosmosdb sql database throughput migrate | Migrieren des Durchsatzes für die NoSQL-Datenbankressource |
az cosmosdb sql container list | Auflisten aller NoSQL-Container in einer Datenbank |
az cosmosdb sql container throughput show | Lesen des Durchsatzwerts für den NoSQL-Container in einem Konto |
az cosmosdb sql container throughput migrate | Migrieren des Durchsatzes für einen NoSQL-Container in einem Konto |
az cosmosdb mongodb database list | Auflisten aller MongoDB-Datenbanken in einem Konto |
az cosmosdb mongodb database throughput show | Lesen des Durchsatzwerts für die MongoDB-Datenbank in einem Konto |
az cosmosdb mongodb database throughput migrate | Migrieren des Durchsatzes für eine Datenbankressource im MongoDB-Konto |
az cosmosdb mongodb collection list | Auflisten aller MongoDB-Sammlungen in einer Datenbank |
az cosmosdb mongodb collection throughput show | Lesen des Durchsatzwerts für die MongoDB-Sammlung in einem Konto |
az cosmosdb mongodb collection throughput migrate | Migrieren des Durchsatzes für eine Sammlungsressource im MongoDB-Konto |
az cosmosdb cassandra keyspace list | Auflisten aller Cassandra-Keyspaces in einem Konto |
az cosmosdb cassandra keyspace throughput show | Lesen des Durchsatzwerts für den Cassandra-Keyspace in einem Konto |
az cosmosdb cassandra keyspace throughput migrate | Migrieren des Durchsatzes für einen Cassandra-Keyspace im Konto |
az cosmosdb cassandra table list | Auflisten aller Cassandra-Tabellen in einem Keyspace |
az cosmosdb cassandra table throughput show | Lesen des Durchsatzwerts für die Cassandra-Tabelle in einem Konto |
az cosmosdb cassandra table throughput migrate | Migrieren des Durchsatzes für eine Cassandra-Tabelle in einem Konto |
az cosmosdb gremlin database list | Auflisten aller Gremlin-Datenbanken in einem Konto |
az cosmosdb gremlin database throughput show | Lesen des Durchsatzwerts für die Gremlin-Datenbank in einem Konto |
az cosmosdb gremlin database throughput migrate | Migrieren des Durchsatzes für die Gremlin-Datenbankressource |
az cosmosdb gremlin container list | Auflisten aller Gremlin-Graphen in einer Datenbank |
az cosmosdb gremlin container throughput show | Lesen des Durchsatzwerts für den Gremlin-Graph in einem Konto |
az cosmosdb gremlin graph throughput migrate | Migrieren des Durchsatzes für einen Gremlin-Graph in einem Konto |
az cosmosdb table list | Auflisten aller Tabellen in einem Konto |
az cosmosdb table throughput show | Lesen des Durchsatzwerts für die Tabelle in einem Konto |
az cosmosdb table throughput migrate | Migrieren des Durchsatzes für eine Tabelle in einem Konto |
Nächste Schritte
Weitere Informationen zur Azure Cosmos DB-CLI finden Sie in der Dokumentation zur Azure Cosmos DB-CLI.
Azure CLI-Beispiele für bestimmte APIs finden Sie hier: