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 azure cli Azure Cosmos DB parancsok referenciaoldalai az Azure CLI-referenciában érhetők el. További példákat találhat az Azure Cosmos DB Azure CLI-mintáiban, beleértve a MongoDB-, Gremlin-,Cassandra- és Cosmos DB-fiókok, -adatbázisok és -tárolók Table API.

Előfeltételek

  • Használja Azure Cloud Shellbash-környezetet.

    A Cloud Shell indítása új ablakban

  • A CLI-referenciaparancsok futtatásához telepítheti az Azure CLI-t is.

    • 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 megismeréséhez tekintse meg a Bejelentkezés az Azure CLI használatával című szakaszt.

    • Ha a rendszer kéri, az első használatkor telepítse az Azure CLI-bővítményeket. 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.

  • Ehhez a cikkhez az Azure CLI 2.22.1-es vagy újabb verziójára van szükség. Ha a Azure Cloud Shell, a legújabb verzió már telepítve van.

Egyéb API-k Azure CLI-mintáiért lásd: CLI-minták a Cassandrához,CLI-minták a MongoDBAPI-hoz, CLI-minták a Gremlinhez, CLI-minták a Tablehez

Fontos

Azure Cosmos DB erőforrások nem nevezhetők át, mivel ez sérti a Azure Resource Manager és az erőforrás URI-já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

Hozzon létre egy Azure Cosmos DB API-val SQL, munkamenet-konzisztenciával az USA 2. nyugati régiójában és az USA 2. 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 2' failoverPriority=0 isZoneRedundant=False \
    --locations regionName='East US 2' 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ítsa el a régiót.

Megjegyzés

Nem adhat hozzá és nem távolíthat el régiókat egyidejűleg, és nem módosíthatja az locations 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 aktiválá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űvelethez szükséges idő attól függ, hogy mennyi adatot tárol a rendszer a fiókban.

resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'

# Create an account with 2 regions
az cosmosdb create --name $accountName --resource-group $resourceGroupName \
    --locations regionName="West US 2" failoverPriority=0 isZoneRedundant=False \
    --locations regionName="East US 2" failoverPriority=1 isZoneRedundant=False

# Add a region
az cosmosdb update --name $accountName --resource-group $resourceGroupName \
    --locations regionName="West US 2" failoverPriority=0 isZoneRedundant=False \
    --locations regionName="East US 2" 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 2" failoverPriority=0 isZoneRedundant=False \
    --locations regionName="East US 2" failoverPriority=1 isZoneRedundant=False

Több írási régió engedélyezése

Többrépontos írások 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

Automatikus feladatátvételre konfigurált Azure Cosmos-fiók feladatátvételi prioritásának beállítása

# Assume region order is initially 'West US 2'=0 'East US 2'=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 2
az cosmosdb failover-priority-change --ids $accountId \
    --failover-policies 'West US 2=0' 'South Central US=1' 'East US 2=2'

Automatikus feladatátvétel engedélyezése

# Enable automatic 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

Ha a régiót prioritással módosítja = 0, az manuális feladatátvételt vált ki egy Azure Cosmos-fiókhoz. A prioritás bármely más módosítása nem vált ki feladatátvételt.

# Assume region order is initially 'West US 2=0' 'East US 2=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 2=0' 'South Central US=1' 'West US 2=2'

Az összes fiókkulcs listába sorolva

Le kell szereznie egy Cosmos-fiók összes kulcsát.

# List all account keys
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'

az cosmosdb keys list \
   -n $accountName \
   -g $resourceGroupName

Csak olvasható fiókkulcsok listája

Csak olvasható kulcsok lekérte egy 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 felsorolása

Le kell szereznie egy Cosmos-fiók kapcsolati sztringjét.

# 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 újragenerálása egy 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, hogyan kezelheti a Azure Cosmos DB adatbázist, beleértve a következőket:

Adatbázis létrehozása

Cosmos-adatbázis létrehozása.

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

Hozzon létre egy Cosmos-adatbázist megosztott átviteli sebességen.

resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
throughput=400

az cosmosdb sql database create \
    -a $accountName \
    -g $resourceGroupName \
    -n $databaseName \
    --throughput $throughput

Adatbázis áttelepítése az átviteli sebesség automatikus skálázásához

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 a Cosmos-adatbázis átviteli sebességét 1000 RU/s-sel.

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ását egy adatbázisra, hogy megakadályozza annak törlését. Ehhez a funkcióhoz zárolni kell a Cosmos-fiókot, hogy ne változnak meg az adatsíkOK. További információ: Az SDK-k változásainak megakadályozása. Az Azure-erőforrászárak egy zárolási típus megadásával azt is megakadályozhatják, hogy egy erőforrás ReadOnly megváltozik. Cosmos-adatbázis használata az átviteli sebesség változá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, hogyan kezelheti a Azure Cosmos DB tárolót, beleértve a következőket:

Tároló létrehozása

Hozzon létre egy Cosmos-tárolót az alapértelmezett indexelési szabályzat, partíciókulcs és 400 RU/s értékekkel.

# 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 indexelési szabályzatokkal, partíciók kulccsal és 4000-es automatikus skálázási RU/s értékekkel.

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

Hozzon létre egy Cosmos-tárolót engedélyezett TTL-sel.

# 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

Egyéni indexelési szabályzatot tartalmazó tároló létrehozása

Hozzon létre egy Cosmos-tárolót egyéni indexelési szabályzat, térbeli index, összetett index, partíciókulcs és 400 RU/s értékekkel.

# 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 a Cosmos-tároló átviteli sebességét 1000 RU/s-sel.

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ó áttelepítése az átviteli sebesség automatikus skálázása érdekében

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ók törlésének megakadályozása

Helyezzen egy Azure-erőforrás törlési zárolását egy tárolóra, hogy megakadályozza annak törlését. Ehhez a funkcióhoz zárolni kell a Cosmos-fiókot, hogy ne változnak meg az adatsíkOK. További információ: Az SDK-k változásainak megakadályozása. Az Azure-erőforrászárak egy zárolási típus megadásával azt is megakadályozhatják, hogy egy erőforrás ReadOnly megváltozik. Cosmos-tárolóknál ezzel megakadályozható az átviteli sebesség vagy bármely más tulajdonság módosulá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

További információ az Azure CLI-ről: