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
Használja a Bash-környezetet az Azure Cloud Shell. További információt az Azure Cloud Shell Bash rövid útmutatóban talál.
Ha helyileg szeretné futtatni a CLI referenciaparancsait, telepítse az Azure CLI-t . Ha Windows vagy macOS rendszeren fut, 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.
- 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-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 sztringek listázása
- Fiókkulcs újragenerálása
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
- 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
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
- 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 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:
