Zarządzanie zasobami usługi Azure Cosmos DB for NoSQL przy użyciu interfejsu wiersza polecenia platformy Azure
DOTYCZY: NoSQL
W poniższym przewodniku opisano typowe polecenia służące do automatyzowania zarządzania kontami, bazami danych i kontenerami usługi Azure Cosmos DB przy użyciu interfejsu wiersza polecenia platformy Azure. Strony referencyjne dla wszystkich poleceń dostępnych w interfejsie wiersza polecenia usługi Azure Cosmos DB są dostępne w dokumentacji dotyczącej interfejsu wiersza polecenia platformy Azure. Więcej przykładów można również znaleźć w przykładach interfejsu wiersza polecenia platformy Azure dla usługi Azure Cosmos DB, w tym na temat tworzenia kont, baz danych i kontenerów usługi Azure Cosmos DB dla baz danych MongoDB, Gremlin, Cassandra i interfejsu API dla tabel.
Wymagania wstępne
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
- Ten artykuł wymaga wersji 2.22.1 lub nowszej interfejsu wiersza polecenia platformy Azure. W przypadku korzystania z usługi Azure Cloud Shell najnowsza wersja jest już zainstalowana.
Przykłady interfejsu wiersza polecenia platformy Azure dla innych interfejsów API można znaleźć w temacie Przykłady interfejsu wiersza polecenia dla bazy danych Cassandra, przykłady interfejsu wiersza polecenia dla interfejsu API dla bazy danych MongoDB, przykłady interfejsu wiersza polecenia dla języka Gremlin, przykłady interfejsu wiersza polecenia dla tabeli
Ważne
Nie można zmienić nazwy zasobów usługi Azure Cosmos DB, ponieważ narusza to sposób działania usługi Azure Resource Manager z identyfikatorami URI zasobów.
Konta usługi Azure Cosmos DB
W poniższych sekcjach pokazano, jak zarządzać kontem usługi Azure Cosmos DB, w tym:
- Tworzenie konta usługi Azure Cosmos DB
- Add or remove regions (Dodawanie lub usuwanie regionów)
- Włączanie zapisów w wielu regionach
- Ustawianie regionalnego priorytetu trybu failover
- Włączanie trybu failover zarządzanego przez usługę
- Wyzwalanie ręcznego przejścia w tryb failover
- Wyświetlanie listy kluczy kont
- Wyświetlanie listy kluczy kont tylko do odczytu
- Wyświetlanie listy parametry połączenia
- Ponowne generowanie klucza konta
Tworzenie konta usługi Azure Cosmos DB
Utwórz konto usługi Azure Cosmos DB przy użyciu interfejsu API dla noSQL, spójności sesji w regionach Zachodnie stany USA i Wschodnie stany USA:
Ważne
Nazwa konta usługi Azure Cosmos DB musi być mała i zawierać mniej niż 44 znaki.
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
Add or remove regions (Dodawanie lub usuwanie regionów)
Utwórz konto usługi Azure Cosmos DB z dwoma regionami, dodaj region i usuń region.
Uwaga
Nie można jednocześnie dodawać ani usuwać regionów locations
ani zmieniać innych właściwości konta usługi Azure Cosmos DB. Modyfikowanie regionów musi być wykonywane jako oddzielna operacja niż jakakolwiek inna zmiana zasobu konta.
Uwaga
To polecenie umożliwia dodawanie i usuwanie regionów, ale nie pozwala na modyfikowanie priorytetów trybu failover lub wyzwalanie ręcznego trybu failover. Zobacz Ustawianie priorytetu trybu failover i Wyzwalanie ręcznego przejścia w tryb failover.
Napiwek
Gdy dodawany jest nowy region, wszystkie dane muszą zostać w pełni zreplikowane i zatwierdzone w nowym regionie, zanim region zostanie oznaczony jako dostępny. Czas potrzebny na wykonanie tej operacji zależy od ilości danych przechowywanych na koncie. Jeśli trwa operacja skalowania przepływności asynchronicznej, operacja skalowania przepływności w górę zostanie wstrzymana i zostanie wznowiona automatycznie po zakończeniu operacji dodawania/usuwania regionu.
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
Włączanie wielu regionów zapisu
Włączanie zapisu w wielu regionach dla konta usługi Azure Cosmos DB
# 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
Ustawianie priorytetu trybu failover
Ustawianie priorytetu trybu failover dla konta usługi Azure Cosmos DB skonfigurowanego na potrzeby trybu failover zarządzanego przez usługę
# 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'
Włączanie trybu failover zarządzanego przez usługę
# 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
Wyzwalanie ręcznego przejścia w tryb failover
Uwaga
Zmiana regionu o priorytcie = 0 spowoduje wyzwolenie ręcznego przejścia w tryb failover dla konta usługi Azure Cosmos DB. Każda inna zmiana priorytetu nie spowoduje wyzwolenia trybu failover.
Uwaga
Jeśli wykonasz ręczną operację trybu failover, gdy operacja skalowania przepływności asynchronicznej jest w toku, operacja skalowania przepływności zostanie wstrzymana. Zostanie ona wznowiona automatycznie po zakończeniu operacji trybu 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)
# 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'
Wyświetlanie listy wszystkich kluczy kont
Pobierz wszystkie klucze dla konta usługi Azure Cosmos DB.
# List all account keys
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
az cosmosdb keys list \
-n $accountName \
-g $resourceGroupName
Wyświetlanie listy kluczy kont tylko do odczytu
Uzyskiwanie kluczy tylko do odczytu dla konta usługi Azure Cosmos DB.
# List read-only account keys
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
az cosmosdb keys list \
-n $accountName \
-g $resourceGroupName \
--type read-only-keys
Wyświetlanie listy parametry połączenia
Pobierz parametry połączenia dla konta usługi Azure Cosmos DB.
# List connection strings
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
az cosmosdb keys list \
-n $accountName \
-g $resourceGroupName \
--type connection-strings
Ponowne generowanie klucza konta
Wygeneruj ponownie nowy klucz dla konta usługi Azure Cosmos DB.
# Regenerate secondary account keys
# key-kind values: primary, primaryReadonly, secondary, secondaryReadonly
az cosmosdb keys regenerate \
-n $accountName \
-g $resourceGroupName \
--key-kind secondary
Baza danych usługi Azure Cosmos DB
W poniższych sekcjach pokazano, jak zarządzać bazą danych usługi Azure Cosmos DB, w tym:
- Tworzenie bazy danych
- Tworzenie bazy danych z udostępnioną przepływnością
- Migrowanie bazy danych do przepływności autoskalowania
- Zmienianie przepływności bazy danych
- Zapobieganie usuwaniu bazy danych
Utwórz bazę danych
Tworzy bazę danych usługi Azure Cosmos DB.
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
az cosmosdb sql database create \
-a $accountName \
-g $resourceGroupName \
-n $databaseName
Tworzenie bazy danych z udostępnioną przepływnością
Utwórz bazę danych usługi Azure Cosmos DB z udostępnioną przepływnością.
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
throughput=400
az cosmosdb sql database create \
-a $accountName \
-g $resourceGroupName \
-n $databaseName \
--throughput $throughput
Migrowanie bazy danych do przepływności autoskalowania
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
Zmienianie przepływności bazy danych
Zwiększ przepływność bazy danych usługi Azure Cosmos DB o 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
Zapobieganie usuwaniu bazy danych
Umieść blokadę usuwania zasobów platformy Azure w bazie danych, aby zapobiec jego usunięciu. Ta funkcja wymaga zablokowania konta usługi Azure Cosmos DB przed zmianą przez zestawy SDK płaszczyzny danych. Aby dowiedzieć się więcej, zobacz zapobieganie zmianom z zestawów SDK. Blokady zasobów platformy Azure mogą również uniemożliwić zmianę zasobu, określając typ blokady ReadOnly
. W przypadku bazy danych usługi Azure Cosmos DB można jej użyć, aby zapobiec zmianie przepływności.
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
Kontener usługi Azure Cosmos DB
W poniższych sekcjach pokazano, jak zarządzać kontenerem usługi Azure Cosmos DB, w tym:
- Tworzenie kontenera
- Tworzenie kontenera z autoskalowaniem
- Tworzenie kontenera z włączonym czasem wygaśnięcia
- Tworzenie kontenera z niestandardowymi zasadami indeksu
- Zmienianie przepływności kontenera
- Migrowanie kontenera do przepływności autoskalowania
- Zapobieganie usuwaniu kontenera
Tworzenie kontenera
Utwórz kontener usługi Azure Cosmos DB z domyślnymi zasadami indeksu, kluczem partycji i jednostkami RU/s z 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
Tworzenie kontenera z autoskalowaniem
Utwórz kontener usługi Azure Cosmos DB z domyślnymi zasadami indeksu, kluczem partycji i automatycznym skalowaniem RU/s z 4000.
# 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
Tworzenie kontenera z użyciem czasu wygaśnięcia
Utwórz kontener usługi Azure Cosmos DB z włączonym czasem wygaśnięcia.
# 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
Tworzenie kontenera z niestandardowymi zasadami indeksu
Utwórz kontener usługi Azure Cosmos DB z niestandardowymi zasadami indeksu, indeksem przestrzennym, indeksem złożonym, kluczem partycji i jednostkami RU/s z 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"
Zmienianie przepływności kontenera
Zwiększ przepływność kontenera usługi Azure Cosmos DB o 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
Migrowanie kontenera do przepływności autoskalowania
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
Zapobieganie usuwaniu kontenera
Umieść blokadę usuwania zasobów platformy Azure w kontenerze, aby zapobiec jego usunięciu. Ta funkcja wymaga zablokowania konta usługi Azure Cosmos DB przed zmianą przez zestawy SDK płaszczyzny danych. Aby dowiedzieć się więcej, zobacz zapobieganie zmianom z zestawów SDK. Blokady zasobów platformy Azure mogą również uniemożliwić zmianę zasobu, określając typ blokady ReadOnly
. W przypadku kontenera usługi Azure Cosmos DB blokady mogą służyć do zapobiegania zmianie przepływności lub jakiejkolwiek innej właściwości.
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
Następne kroki
Aby uzyskać więcej informacji na temat interfejsu wiersza polecenia platformy Azure, zobacz: