Az Azure Cosmos DB for NoSQL-erőforrások kezelése az Azure CLI használatával
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Az alábbi útmutató az Azure Cosmos DB-fiókok, -adatbázisok és -tárolók felügyeletének Azure CLI-vel történő automatizálásához használható általános parancsokat ismerteti. Az Azure Cosmos DB CLI-parancsainak egyes referenciaoldalait az Azure CLI referenciái között érheti el. További példákat is találhat az Azure Cosmos DB-hez készült Azure CLI-mintákban, beleértve az Azure Cosmos DB-fiókok, -adatbázisok és -tárolók létrehozását és kezelését a MongoDB, a Gremlin, a Cassandra és a Table API számára.
Előfeltételek
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
- Ez a cikk az Azure CLI 2.22.1-es vagy újabb verzióját igényli. Az Azure Cloud Shell használata esetén a legújabb verzió már telepítve van.
Más API-khoz készült Azure CLI-mintákért lásd a Cassandra cli-mintáit, a MongoDB API-hoz készült CLI-mintákat, a Gremlin parancssori felületi mintáit, a cli-mintákat a táblázathoz
Fontos
Az Azure Cosmos DB-erőforrások nem nevezhetők át, mivel ez sérti az Azure Resource Manager erőforrás-URI-kkal való működését.
Azure Cosmos DBAccounts
Az alábbi szakaszok bemutatják, hogyan kezelheti az Azure Cosmos DB-fiókot, többek között az alábbiakat:
- Azure Cosmos DB-fiók létrehozása
- Régiók hozzáadása vagy eltávolítása
- Többrégiós írás engedélyezése
- Regionális feladatátvételi prioritás beállítása
- Szolgáltatás által felügyelt feladatátvétel engedélyezése
- Manuális feladatátvétel aktiválása
- Fiókkulcsok listázása
- Csak olvasható fiókkulcsok listázása
- Kapcsolati sztring listázása
- Fiókkulcs újragenerálása
Azure Cosmos DB-fiók létrehozása
Hozzon létre egy Azure Cosmos DB-fiókot a NoSQL API-val, a munkamenet konzisztenciáját az USA nyugati régióiban és az USA keleti régióiban:
Fontos
Az Azure Cosmos DB-fiók nevének kisbetűsnek és 44 karakternél kisebbnek kell lennie.
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
Régiók hozzáadása vagy eltávolítása
Hozzon létre egy Azure Cosmos DB-fiókot két régióval, adjon hozzá egy régiót, és távolítsa el a régiót.
Feljegyzés
Nem vehet fel és nem távolíthat el régiókat locations
, és nem módosíthatja az Azure Cosmos DB-fiók egyéb tulajdonságait. A régiókat külön műveletként kell végrehajtani, mint a fiókerőforrás bármely más módosítását.
Feljegyzés
Ez a parancs lehetővé teszi régiók hozzáadását és eltávolítását, de nem teszi lehetővé a feladatátvételi prioritások módosítását vagy manuális feladatátvétel indítását. Lásd: Feladatátvételi prioritás beállítása és manuális feladatátvétel aktiválása.
Tipp.
Új régió hozzáadásakor az összes adatot teljes körűen replikálni és véglegesíteni kell az új régióban, mivel a régiót csak ezt követően lehet elérhetőként megjelölni. A művelet időtartama attól függ, hogy mennyi adatot tárol a fiók. Ha az aszinkron átviteli sebesség skálázási művelete folyamatban van, az átviteli sebesség felskálázási művelete szünetel, és automatikusan folytatódik, amikor a régió hozzáadása/eltávolítása művelet befejeződött.
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
Több írási régió engedélyezése
Többrégiós írás engedélyezése Azure Cosmos DB-fiókhoz
# 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
Feladatátvételi prioritás beállítása
A szolgáltatás által felügyelt feladatátvételhez konfigurált Azure Cosmos DB-fiók feladatátvételi prioritásának beállítása
# 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'
Szolgáltatás által felügyelt feladatátvétel engedélyezése
# 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
Manuális feladatátvétel aktiválása
Figyelemfelhívás
A prioritás = 0 prioritású régió módosítása manuális feladatátvételt indít el egy Azure Cosmos DB-fiókhoz. A többi prioritás módosítása nem indítja el a feladatátvételt.
Feljegyzés
Ha manuális feladatátvételi műveletet hajt végre, miközben az aszinkron átviteli sebesség skálázási művelete folyamatban van, az átviteli sebesség felskálázási művelete szünetel. A feladatátvételi művelet befejeződésekor automatikusan folytatódik.
# 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'
Az összes fiókkulcs listázása
Egy Azure Cosmos DB-fiók összes kulcsának lekérése.
# List all account keys
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
az cosmosdb keys list \
-n $accountName \
-g $resourceGroupName
Csak olvasható fiókkulcsok listázása
Csak olvasható kulcsok lekérése egy Azure Cosmos DB-fiókhoz.
# List read-only account keys
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
az cosmosdb keys list \
-n $accountName \
-g $resourceGroupName \
--type read-only-keys
Kapcsolati sztring listázása
Szerezze be egy Azure Cosmos DB-fiók kapcsolati sztring.
# List connection strings
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
az cosmosdb keys list \
-n $accountName \
-g $resourceGroupName \
--type connection-strings
Fiókkulcs újragenerálása
Új kulcs létrehozása egy Azure Cosmos DB-fiókhoz.
# 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-adatbázis
A következő szakaszok bemutatják, hogyan kezelheti az Azure Cosmos DB-adatbázist, beleértve a következőket:
- Adatbázis létrehozása
- Adatbázis létrehozása megosztott átviteli sebességgel
- Adatbázis migrálása automatikus skálázási átviteli sebességre
- Adatbázis átviteli sebességének módosítása
- Adatbázis törlésének megakadályozása
-adatbázis létrehozása
Létrehoz egy Azure Cosmos DB-adatbázist.
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
az cosmosdb sql database create \
-a $accountName \
-g $resourceGroupName \
-n $databaseName
Adatbázis létrehozása megosztott átviteli sebességgel
Hozzon létre egy Azure Cosmos DB-adatbázist megosztott átviteli sebességgel.
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
throughput=400
az cosmosdb sql database create \
-a $accountName \
-g $resourceGroupName \
-n $databaseName \
--throughput $throughput
Adatbázis migrálása automatikus skálázási átviteli sebességre
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
Adatbázis átviteli sebességének módosítása
Egy Azure Cosmos DB-adatbázis átviteli sebességének növelése 1000 RU/s-tal.
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
Adatbázis törlésének megakadályozása
Helyezzen egy Azure-erőforrás-törlési zárolást egy adatbázisra, hogy megakadályozza annak törlését. Ez a funkció megköveteli az Azure Cosmos DB-fiók adatsík-SDK-k általi módosításának zárolását. További információ: Az SDK-k módosításainak megakadályozása. Az Azure-erőforrás-zárolások egy zárolástípus megadásával ReadOnly
megakadályozhatják az erőforrások módosítását. Az Azure Cosmos DB-adatbázisok esetében az átviteli sebesség módosításának megakadályozására használható.
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-tároló
Az alábbi szakaszok bemutatják, hogyan kezelheti az Azure Cosmos DB-tárolót, beleértve a következőket:
- Tároló létrehozása
- Tároló létrehozása automatikus skálázással
- Tároló létrehozása engedélyezett TTL-vel
- Tároló létrehozása egyéni indexszabályzattal
- Tároló átviteli sebességének módosítása
- Tároló migrálása automatikus skálázási átviteli sebességre
- Tároló törlésének megakadályozása
Tároló létrehozása
Hozzon létre egy Azure Cosmos DB-tárolót az alapértelmezett indexszabályzattal, a partíciókulcsmal és a 400 ru/s értékkel.
# 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
Tároló létrehozása automatikus skálázással
Hozzon létre egy Azure Cosmos DB-tárolót alapértelmezett indexszabályzattal, partíciókulcskal és 4000-ből álló automatikus skálázási RU/s-val.
# 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
Tároló létrehozása TTL-vel
Hozzon létre egy Azure Cosmos DB-tárolót, amelyen engedélyezve van a TTL.
# 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
Tároló létrehozása egyéni indexszabályzattal
Hozzon létre egy Azure Cosmos DB-tárolót egyéni indexszabályzattal, térbeli indexkel, összetett indexkel, partíciókulcsmal és 400 ru/s-val.
# 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"
Tároló átviteli sebességének módosítása
Egy Azure Cosmos DB-tároló átviteli sebességének növelése 1000 RU/s-tal.
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
Tároló migrálása automatikus skálázási átviteli sebességre
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
Tároló törlésének megakadályozása
Helyezzen egy Azure-erőforrás-törlési zárolást egy tárolóra, hogy megakadályozza a törlést. Ez a funkció megköveteli az Azure Cosmos DB-fiók adatsík-SDK-k általi módosításának zárolását. További információ: Az SDK-k módosításainak megakadályozása. Az Azure-erőforrás-zárolások egy zárolástípus megadásával ReadOnly
megakadályozhatják az erőforrások módosítását. Az Azure Cosmos DB-tárolók esetében zárolásokkal megakadályozhatja az átviteli sebesség vagy bármely más tulajdonság módosítását.
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
Következő lépések
Az Azure CLI-vel kapcsolatos további információkért lásd: