Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In de volgende handleiding worden algemene opdrachten beschreven voor het automatiseren van het beheer van uw Azure Cosmos DB-accounts, -databases en -containers met behulp van Azure CLI. Referentiepagina's voor alle Azure Cosmos DB CLI-opdrachten zijn beschikbaar in de naslaginformatie voor Azure CLI.
Vereiste voorwaarden
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Aan de slag met Azure Cloud Shell voor meer informatie.
Als je de voorkeur geeft aan het lokaal uitvoeren van CLI-referentiecommando's, installeer dan de Azure CLI. Als je op Windows of macOS werkt, overweeg dan om Azure CLI in een Docker-container uit te voeren. Voor meer informatie, zie Hoe u de Azure CLI in een Docker-container kunt uitvoeren.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met de opdracht az login. Om het authenticatieproces te voltooien, volgt u de stappen die op uw terminal worden weergegeven. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Wanneer u daarom wordt gevraagd, installeer de Azure CLI-extensie bij het eerste gebruik. Zie Extensies gebruiken en beheren met de Azure CLIvoor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en de afhankelijke bibliotheken te vinden. Voer az upgrade uit om naar de nieuwste versie te upgraden.
- Voor dit artikel is versie 2.22.1 of hoger van De Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.
Voor Azure CLI-voorbeelden voor andere API's raadpleegt u CLI-voorbeelden voor Cassandra, CLI-voorbeelden voor API voor MongoDB, CLI-voorbeelden voor Gremlin, CLI-voorbeelden voor tabel
Belangrijk
De naam van Azure Cosmos DB-resources kan niet worden gewijzigd, omdat dit in strijd is met de werking van Azure Resource Manager met resource-URI's.
Azure Cosmos DB-accounts
In de volgende secties ziet u hoe u het Azure Cosmos DB-account beheert, waaronder:
- Azure Cosmos DB-account maken
- Regio's toevoegen of verwijderen
- Multi-regionale schrijfbewerkingen inschakelen
- Regionale failoverprioriteit instellen
- Door de service beheerde failover inschakelen
- Handmatige failover activeren
- Accountsleutels vermelden
- Alleen-lezen accountsleutels weergeven
- Lijst van verbindingreeks
- Accountsleutel opnieuw genereren
Een Azure Cosmos DB-account maken
Maak een Azure Cosmos DB-account met API voor NoSQL, sessieconsistentie in regio's VS - west en VS - oost:
Belangrijk
De naam van het Azure Cosmos DB-account moet uit kleine letters en minder dan 44 tekens bestaan.
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount' #needs to be lower case and less than 44 characters
az cosmosdb create \
-n $accountName \
-g $resourceGroupName \
--default-consistency-level Session \
--locations regionName='West US' failoverPriority=0 isZoneRedundant=False \
--locations regionName='East US' failoverPriority=1 isZoneRedundant=False
Regio's toevoegen of verwijderen
Maak een Azure Cosmos DB-account met twee regio's, voeg een regio toe en verwijder een regio.
Opmerking
U kunt geen regio's locations tegelijk toevoegen of verwijderen en andere eigenschappen voor een Azure Cosmos DB-account wijzigen. Het wijzigen van regio's moet worden uitgevoerd als een afzonderlijke bewerking dan een andere wijziging in de accountresource.
Opmerking
Met deze opdracht kunt u regio's toevoegen en verwijderen, maar niet de failover-prioriteit wijzigen of een handmatige failover activeren. Zie Failoverprioriteit instellen en Handmatige failover activeren.
Aanbeveling
Wanneer een nieuwe regio wordt toegevoegd, moeten alle gegevens volledig worden gerepliceerd en in de nieuwe regio worden vastgelegd voordat de regio als beschikbaar wordt gemarkeerd. De hoeveelheid tijd die deze bewerking kost, is afhankelijk van hoeveel gegevens in het account worden opgeslagen. Als er een asynchrone doorvoerschaalbewerking wordt uitgevoerd, wordt de bewerking voor het omhoog schalen van doorvoer onderbroken en wordt deze automatisch hervat wanneer de regiobewerking voor toevoegen/verwijderen is voltooid.
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
# Create an account with 2 regions
az cosmosdb create --name $accountName --resource-group $resourceGroupName \
--locations regionName="West US" failoverPriority=0 isZoneRedundant=False \
--locations regionName="East US" failoverPriority=1 isZoneRedundant=False
# Add a region
az cosmosdb update --name $accountName --resource-group $resourceGroupName \
--locations regionName="West US" failoverPriority=0 isZoneRedundant=False \
--locations regionName="East US" failoverPriority=1 isZoneRedundant=False \
--locations regionName="South Central US" failoverPriority=2 isZoneRedundant=False
# Remove a region
az cosmosdb update --name $accountName --resource-group $resourceGroupName \
--locations regionName="West US" failoverPriority=0 isZoneRedundant=False \
--locations regionName="East US" failoverPriority=1 isZoneRedundant=False
Meerdere schrijfregio's inschakelen
Schrijfbewerkingen voor meerdere regio's inschakelen voor een Azure Cosmos DB-account
# Update an Azure Cosmos DB account from single write region to multiple write regions
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
# Get the account resource id for an existing account
accountId=$(az cosmosdb show -g $resourceGroupName -n $accountName --query id -o tsv)
az cosmosdb update --ids $accountId --enable-multiple-write-locations true
Failoverprioriteit instellen
De failoverprioriteit instellen voor een Azure Cosmos DB-account dat is geconfigureerd voor door de service beheerde failover
# Assume region order is initially 'West US'=0 'East US'=1 'South Central US'=2 for account
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
# Get the account resource id for an existing account
accountId=$(az cosmosdb show -g $resourceGroupName -n $accountName --query id -o tsv)
# Make South Central US the next region to fail over to instead of East US
az cosmosdb failover-priority-change --ids $accountId \
--failover-policies 'West US=0' 'South Central US=1' 'East US=2'
Door de service beheerde failover inschakelen
# Enable service-managed failover on an existing account
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
# Get the account resource id for an existing account
accountId=$(az cosmosdb show -g $resourceGroupName -n $accountName --query id -o tsv)
az cosmosdb update --ids $accountId --enable-automatic-failover true
Handmatige failover initiëren
Waarschuwing
Als u de regio wijzigt met prioriteit = 0, wordt een handmatige failover voor een Azure Cosmos DB-account geactiveerd. Een andere wijziging van de prioriteit zal geen failover activeren.
Opmerking
Als u een handmatige failoverbewerking uitvoert terwijl een asynchrone doorvoerschaalbewerking wordt uitgevoerd, wordt de bewerking voor het omhoog schalen van doorvoer onderbroken. Deze wordt automatisch hervat wanneer de failoverbewerking is voltooid.
# Assume region order is initially 'West US=0' 'East US=1' 'South Central US=2' for account
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
# Get the account resource id for an existing account
accountId=$(az cosmosdb show -g $resourceGroupName -n $accountName --query id -o tsv)
# Trigger a manual failover to promote East US 2 as new write region
az cosmosdb failover-priority-change --ids $accountId \
--failover-policies 'East US=0' 'South Central US=1' 'West US=2'
Alle accountsleutels weergeven
Haal alle sleutels voor een Azure Cosmos DB-account op.
# List all account keys
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
az cosmosdb keys list \
-n $accountName \
-g $resourceGroupName
Alleen-lezen accountsleutels weergeven
Haal alleen-lezensleutels op voor een Azure Cosmos DB-account.
# List read-only account keys
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
az cosmosdb keys list \
-n $accountName \
-g $resourceGroupName \
--type read-only-keys
Verbindingsreeksen weergeven
Haal de verbindingsreeks voor een Azure Cosmos DB-account op.
# List connection strings
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
az cosmosdb keys list \
-n $accountName \
-g $resourceGroupName \
--type connection-strings
Accountsleutel opnieuw genereren
Genereer een nieuwe sleutel voor een Azure Cosmos DB-account.
# Regenerate secondary account keys
# key-kind values: primary, primaryReadonly, secondary, secondaryReadonly
az cosmosdb keys regenerate \
-n $accountName \
-g $resourceGroupName \
--key-kind secondary
Azure Cosmos DB-database
In de volgende secties ziet u hoe u de Azure Cosmos DB-database kunt beheren, met inbegrip van:
- Een database maken
- Een database maken met gedeelde doorvoer
- Een database migreren om de doorvoer automatisch te schalen
- Databasedoorvoer wijzigen
- Voorkomen dat een database wordt verwijderd
Een database maken
Maak een Azure Cosmos DB-database.
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
az cosmosdb sql database create \
-a $accountName \
-g $resourceGroupName \
-n $databaseName
Een database maken met gedeelde doorvoer
Maak een Azure Cosmos DB-database met gedeelde doorvoer.
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
throughput=400
az cosmosdb sql database create \
-a $accountName \
-g $resourceGroupName \
-n $databaseName \
--throughput $throughput
Een database migreren om de doorvoercapaciteit automatisch te schalen
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
# Migrate to autoscale throughput
az cosmosdb sql database throughput migrate \
-a $accountName \
-g $resourceGroupName \
-n $databaseName \
-t 'autoscale'
# Read the new autoscale max throughput
az cosmosdb sql database throughput show \
-g $resourceGroupName \
-a $accountName \
-n $databaseName \
--query resource.autoscaleSettings.maxThroughput \
-o tsv
Databasedoorvoer wijzigen
Verhoog de doorvoer van een Azure Cosmos DB-database met 1000 RU/s.
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
newRU=1000
# Get minimum throughput to make sure newRU is not lower than minRU
minRU=$(az cosmosdb sql database throughput show \
-g $resourceGroupName -a $accountName -n $databaseName \
--query resource.minimumThroughput -o tsv)
if [ $minRU -gt $newRU ]; then
newRU=$minRU
fi
az cosmosdb sql database throughput update \
-a $accountName \
-g $resourceGroupName \
-n $databaseName \
--throughput $newRU
Voorkomen dat een database wordt verwijderd
Plaats een Azure-resourcevergrendeling op een database om te voorkomen dat deze wordt verwijderd. Voor deze functie moet het Azure Cosmos DB-account worden vergrendeld, zodat wijzigingen door SDK's van het datavlak worden voorkomen. Zie voor meer informatie het voorkomen van wijzigingen van SDK's. Azure-resourcevergrendelingen kunnen ook voorkomen dat een resource wordt gewijzigd door een ReadOnly vergrendelingstype op te geven. Voor een Azure Cosmos DB-database kan deze worden gebruikt om te voorkomen dat doorvoer wordt gewijzigd.
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
lockType='CanNotDelete' # CanNotDelete or ReadOnly
databaseParent="databaseAccounts/$accountName"
databaseLockName="$databaseName-Lock"
# Create a delete lock on database
az lock create --name $databaseLockName \
--resource-group $resourceGroupName \
--resource-type Microsoft.DocumentDB/sqlDatabases \
--lock-type $lockType \
--parent $databaseParent \
--resource $databaseName
# Delete lock on database
lockid=$(az lock show --name $databaseLockName \
--resource-group $resourceGroupName \
--resource-type Microsoft.DocumentDB/sqlDatabases \
--resource $databaseName \
--parent $databaseParent \
--output tsv --query id)
az lock delete --ids $lockid
Azure Cosmos DB-container
In de volgende secties ziet u hoe u de Azure Cosmos DB-container kunt beheren, met inbegrip van:
- Een container maken
- Een container maken met automatische schaalaanpassing
- Een container maken waarvoor TTL is ingeschakeld
- Een container maken met aangepast indexbeleid
- Containerdoorvoer wijzigen
- Een container migreren om doorvoer automatisch te schalen
- Voorkomen dat een container wordt verwijderd
Maak een container aan
Maak een Azure Cosmos DB-container met standaardindexbeleid, partitiesleutel en RU/s van 400.
# Create a API for NoSQL container
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
containerName='container1'
partitionKey='/myPartitionKey'
throughput=400
az cosmosdb sql container create \
-a $accountName -g $resourceGroupName \
-d $databaseName -n $containerName \
-p $partitionKey --throughput $throughput
Een container maken met automatische schaalaanpassing
Maak een Azure Cosmos DB-container met standaardindexbeleid, partitiesleutel en RU/s van 4000 automatisch schalen.
# Create a API for NoSQL container
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
containerName='container1'
partitionKey='/myPartitionKey'
maxThroughput=4000
az cosmosdb sql container create \
-a $accountName -g $resourceGroupName \
-d $databaseName -n $containerName \
-p $partitionKey --max-throughput $maxThroughput
Een container maken met TTL
Maak een Azure Cosmos DB-container waarvoor TTL is ingeschakeld.
# Create an Azure Cosmos DB container with TTL of one day
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
containerName='container1'
az cosmosdb sql container update \
-g $resourceGroupName \
-a $accountName \
-d $databaseName \
-n $containerName \
--ttl=86400
Een container maken met een aangepast indexbeleid
Maak een Azure Cosmos DB-container met een aangepast indexbeleid, een ruimtelijke index, samengestelde index, een partitiesleutel en RU/s van 400.
# Create a API for NoSQL container
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
containerName='container1'
partitionKey='/myPartitionKey'
throughput=400
# Generate a unique 10 character alphanumeric string to ensure unique resource names
uniqueId=$(env LC_CTYPE=C tr -dc 'a-z0-9' < /dev/urandom | fold -w 10 | head -n 1)
# Define the index policy for the container, include spatial and composite indexes
idxpolicy=$(cat << EOF
{
"indexingMode": "consistent",
"includedPaths": [
{"path": "/*"}
],
"excludedPaths": [
{ "path": "/headquarters/employees/?"}
],
"spatialIndexes": [
{"path": "/*", "types": ["Point"]}
],
"compositeIndexes":[
[
{ "path":"/name", "order":"ascending" },
{ "path":"/age", "order":"descending" }
]
]
}
EOF
)
# Persist index policy to json file
echo "$idxpolicy" > "idxpolicy-$uniqueId.json"
az cosmosdb sql container create \
-a $accountName -g $resourceGroupName \
-d $databaseName -n $containerName \
-p $partitionKey --throughput $throughput \
--idx @idxpolicy-$uniqueId.json
# Clean up temporary index policy file
rm -f "idxpolicy-$uniqueId.json"
Containerdoorvoer wijzigen
Verhoog de doorvoer van een Azure Cosmos DB-container met 1000 RU/s.
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
containerName='container1'
newRU=1000
# Get minimum throughput to make sure newRU is not lower than minRU
minRU=$(az cosmosdb sql container throughput show \
-g $resourceGroupName -a $accountName -d $databaseName \
-n $containerName --query resource.minimumThroughput -o tsv)
if [ $minRU -gt $newRU ]; then
newRU=$minRU
fi
az cosmosdb sql container throughput update \
-a $accountName \
-g $resourceGroupName \
-d $databaseName \
-n $containerName \
--throughput $newRU
Een container migreren om doorvoer automatisch te schalen
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
containerName='container1'
# Migrate to autoscale throughput
az cosmosdb sql container throughput migrate \
-a $accountName \
-g $resourceGroupName \
-d $databaseName \
-n $containerName \
-t 'autoscale'
# Read the new autoscale max throughput
az cosmosdb sql container throughput show \
-g $resourceGroupName \
-a $accountName \
-d $databaseName \
-n $containerName \
--query resource.autoscaleSettings.maxThroughput \
-o tsv
Voorkomen dat een container wordt verwijderd
Plaats een Azure-resourcevergrendeling op een container om te voorkomen dat deze wordt verwijderd. Voor deze functie moet het Azure Cosmos DB-account worden vergrendeld, zodat wijzigingen door SDK's van het datavlak worden voorkomen. Zie voor meer informatie het voorkomen van wijzigingen van SDK's. Azure-resourcevergrendelingen kunnen ook voorkomen dat een resource wordt gewijzigd door een ReadOnly vergrendelingstype op te geven. Voor een Azure Cosmos DB-container kunnen vergrendelingen worden gebruikt om te voorkomen dat doorvoer of andere eigenschappen worden gewijzigd.
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
containerName='container1'
lockType='CanNotDelete' # CanNotDelete or ReadOnly
databaseParent="databaseAccounts/$accountName"
containerParent="databaseAccounts/$accountName/sqlDatabases/$databaseName"
containerLockName="$containerName-Lock"
# Create a delete lock on container
az lock create --name $containerLockName \
--resource-group $resourceGroupName \
--resource-type Microsoft.DocumentDB/containers \
--lock-type $lockType \
--parent $containerParent \
--resource $containerName
# Delete lock on container
lockid=$(az lock show --name $containerLockName \
--resource-group $resourceGroupName \
--resource-type Microsoft.DocumentDB/containers \
--resource-name $containerName \
--parent $containerParent \
--output tsv --query id)
az lock delete --ids $lockid
Volgende stappen
Zie voor meer informatie over de Azure CLI: