Azure Cosmos Core (SQL) API-erőforrások kezelése az Azure CLI használatával

A KÖVETKEZŐKRE VONATKOZIK: SQL API

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 Összes Azure Cosmos DB CLI-parancs referenciaoldalai elérhetők az Azure CLI-referenciaanyagban. További példákat is találhat az Azure Cosmos DB-hez készült Azure CLI-mintákban, többek között a MongoDB, a Gremlin, a Cassandra és a Table API Cosmos DB-fiókjai, adatbázisai és tárolóinak létrehozására és kezelésére.

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 a Cassandra CLI-mintáit, a MongoDB API CLI-mintáit, a Gremlin parancssori felületi mintáit, a cli-mintákat a táblához

Fontos

Az Azure Cosmos DB-erőforrások nem nevezhetők át, mert ez sérti az Azure Resource Manager erőforrás-URI-kkal való működését.

Azure Cosmos-fiókok

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

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

Azure Cosmos DB-fiók létrehozása SQL API-val, munkamenet-konzisztenciával az USA nyugati régiójában és az USA keleti régiójában:

Fontos

Az Azure Cosmos-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-fiókot két régióval, adjon hozzá egy régiót, és távolítson el egy régiót.

Megjegyzés

Nem vehet fel és nem távolíthat el régiókat locations , és nem módosíthatja az Azure Cosmos-fiók egyéb tulajdonságait. A régiók módosítását 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 a rendszer mennyi adatot tárol a fiókban. Ha folyamatban van egy aszinkron átviteli sebesség skálázási művelete , az átviteli sebesség vertikális felskálázási művelete szüneteltetve lesz, é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 Cosmos-fiókhoz

# Update an Azure Cosmos 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-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

Az = 0 prioritású régió módosítása manuális feladatátvételt vált ki egy Azure Cosmos-fiók számára. Minden más prioritási változás nem vált ki 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ása folyamatban van, az átviteli sebesség vertikális felskálázási művelete szünetel. A feladatátvételi művelet befejezé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 Cosmos-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 Cosmos-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

A Cosmos-fiók kapcsolati sztringjeinek lekérése.

# 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 Cosmos-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 az Azure Cosmos DB-adatbázis kezelését, beleértve a következőket:

Adatbázis létrehozása

Hozzon létre egy Cosmos-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 Cosmos-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 Cosmos-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 el egy Azure-erőforrás törlési zárolást egy adatbázison, hogy megakadályozza annak törlését. Ez a funkció megköveteli a Cosmos-fiók adatsík-SDK-k általi módosításának zárolását. További információ: 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. Cosmos-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ó

A következő 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 Cosmos-tárolót az alapértelmezett indexszabályzattal, a partíciókulcstal és a 400 ru/s-val.

# Create a SQL API 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 Cosmos-tárolót alapértelmezett indexszabályzattal, partíciókulcskal és 4000 ru/s automatikus skálázással.

# Create a SQL API 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 használatával

Hozzon létre egy Cosmos-tárolót, amelyen engedélyezve van a TTL.

# Create an Azure Cosmos 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 Cosmos-tárolót egy egyéni indexszabályzattal, egy térbeli indexkel, egy összetett indexkel, egy partíciókulccsal és 400 RU/s-val.

# Create a SQL API 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 Cosmos-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 egy Azure-erőforrás törlési zárolást egy tárolóra, hogy megakadályozza annak törlését. Ez a funkció megköveteli a Cosmos-fiók adatsík-SDK-k általi módosításának zárolását. További információ: 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. Cosmos-tárolók esetén a 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: