Az Azure Cosmos DB for NoSQL-erőforrások kezelése az Azure CLI használatával

A KÖVETKEZŐKRE 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-parancsok referenciaoldalai az Azure CLI-referenciaanyagban érhetők 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

  • Ehhez a cikkhez az Azure CLI 2.22.1-es vagy újabb verziója szükséges. 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: CLI-minták a Cassandra-hoz, CLI-minták a MongoDB API-hoz, CLI-minták a Gremlinhez, CLI-minták a táblához

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

A következő szakaszok bemutatják az Azure Cosmos DB-fiók kezelését, beleértve a következőket:

Azure Cosmos DB-fiók létrehozása

Hozzon létre egy Azure Cosmos DB-fiókot a NoSQL API-val, a munkamenet-konzisztencia az USA nyugati régiójában és az USA keleti régiójában:

Fontos

Az Azure Cosmos DB-fiók nevének kisbetűsnek és 44 karakternél rövidebbnek 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ítson el egy régiót.

Megjegyzés

Az Azure Cosmos DB-fiók többi tulajdonsága nem adható hozzá és nem távolítható el locations egyszerre. 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.

Megjegyzé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 rendszer a fiókban. Ha aszinkron átviteli sebesség skálázási művelet van folyamatban, az átviteli sebesség vertikális felskálázási művelete szüneteltetve lesz, és automatikusan folytatódik a régió hozzáadása/eltávolítása művelet befejezésekor.

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 0 prioritású régió módosítása manuális feladatátvételt indít el egy Azure Cosmos DB-fiók esetében. Az egyéb prioritásmódosítások nem indítják el a feladatátvételt.

Megjegyzé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 vertikális felskálázási művelete szüneteltetve lesz. 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 olvasási 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 sztringek listázása

Lekérheti egy Azure Cosmos DB-fiók kapcsolati sztringeit.

# List connection strings
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'

az cosmosdb keys list \
    -n $accountName \
    -g $resourceGroupName \
    --type connection-strings

Fiókkulcs újragenerálása

Hozzon létre új kulcsot 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

Az alábbi szakaszok bemutatják az Azure Cosmos DB-adatbázis kezelését, beleértve a következőket:

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

Megosztott átviteli sebességgel rendelkező adatbázis létrehozása

Hozzon létre egy megosztott átviteli sebességgel rendelkező Azure Cosmos DB-adatbázist.

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 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

Növelje egy Azure Cosmos DB-adatbázis átviteli sebességét 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 el egy Azure-erőforrás-törlési zárolást egy adatbázison, hogy megakadályozza annak törlését. Ehhez a funkcióhoz az Azure Cosmos DB-fiók adatsík-SDK-k általi módosításának kizárása szükséges. További információ: Az SDK-k módosításainak megakadályozása. Az Azure-erőforrászárolások egy zárolási tí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 az Azure Cosmos DB-tároló kezelését, beleértve a következőket:

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

Növelje egy Azure Cosmos DB-tároló átviteli sebességét 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 el egy Azure-erőforrás törlési zárolását egy tárolón, hogy megakadályozza annak törlését. Ehhez a funkcióhoz az Azure Cosmos DB-fiók adatsík-SDK-k általi módosításának kizárása szükséges. További információ: Az SDK-k módosításainak megakadályozása. Az Azure-erőforrás-zárolások azt is megakadályozhatják, hogy egy erőforrás módosuljon egy ReadOnly zárolástípus megadásával. Az Azure Cosmos DB-tárolók esetében zárolásokkal megakadályozhatja az átviteli sebességet 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: