إدارة Azure Cosmos DB لموارد NoSQL باستخدام Azure CLI
ينطبق على: NoSQL
يصف الدليل التالي الأوامر الشائعة لأتمتة إدارة حساباتAzure Cosmos DB وقواعد البيانات والحاويات باستخدام Azure CLI. تتوفر الصفحات المرجعية لجميع أوامر Azure Cosmos DB CLI في مرجع Azure CLI. يمكنك أيضا العثور على المزيد من الأمثلة في نماذج Azure CLI ل Azure Cosmos DB، بما في ذلك كيفية إنشاء وإدارة حسابات Azure Cosmos DB وقواعد البيانات والحاويات ل MongoDB وGremlin وCassandra وواجهة برمجة التطبيقات للجدول.
المتطلبات الأساسية
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع التشغيل السريع ل Bash في Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
- تتطلب هذه المقالة الإصدار 2.22.1 أو إصدارًا أحدث منAzure CLI. إذا كنت تستخدم Azure Cloud Shell، يتم تثبيت أحدث إصدار بالفعل.
بالنسبة لعينات Azure CLI لواجهات برمجة التطبيقات الأخرى، راجع نماذج CLI ل Cassandra ونماذج CLI لواجهة برمجة التطبيقات ل MongoDB ونماذج CLI ل Gremlin ونماذج CLI للجدول
هام
لا يمكن إعادة تسمية موارد Azure Cosmos DB لأن هذا ينتهك كيفية عمل إدارة موارد Azure مع معرّف الموارد المنتظمة.
حسابات Azure Cosmos DB
توضح الأقسام التالية كيفية إدارة حساب Azure Cosmos DB، بما في ذلك:
- إنشاء حساب Azure Cosmos DB
- إضافة مناطق أو إزالتها
- تمكين عمليات الكتابة متعددة المناطق
- تعيين أولوية تجاوز الفشل الإقليمية
- تمكين تجاوز الفشل المدار بواسطة الخدمة
- تشغيل تجاوز الفشل اليدوي
- قائمة مفاتيح الحساب
- سرد مفاتيح الحساب للقراءة فقط
- سرد سلسلة الاتصال
- إعادة تجديد مفاتيح الحساب
إنشاء حساب Azure Cosmos DB
إنشاء حساب Azure Cosmos DB باستخدام واجهة برمجة التطبيقات ل NoSQL وتناسق الجلسة في منطقتي غرب الولايات المتحدة وشرق الولايات المتحدة:
هام
يجب أن يكون اسم حساب Azure Cosmos DB صغيرا وأقل من 44 حرفا.
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
إضافة مناطق أو إزالتها
إنشاء حساب Azure Cosmos DB مع منطقتين، وإضافة منطقة، وإزالة منطقة.
إشعار
لا يمكنك إضافة مناطق locations
أو إزالتها في وقت واحد وتغيير خصائص أخرى لحساب Azure Cosmos DB. يجب إجراء تعديل المناطق كعمليات منفصلة عن أي تغيير آخر في مورد الحساب.
إشعار
يسمح لك هذا الأمر بإضافة المناطق وإزالتها ولكن لا يسمح لك بتعديل أولويات تجاوز الفشل أو تشغيل تجاوز الفشل اليدوي. يمكنك الاطلاع على تعيين أولوية تجاوز الفشل وتشغيل تجاوز الفشل اليدوي.
تلميح
عند إضافة منطقة جديدة، يجب نسخ جميع البيانات بالكامل وتثبيتها في المنطقة الجديدة قبل وضع علامة على المنطقة على أنها متوفرة. يعتمد مقدار الوقت الذي تستغرقه هذه العملية على مقدار البيانات المخزنة داخل الحساب. إذا كانت هناك عملية تحجيم معدل النقل غير المتزامن قيد التقدم، فستقف عملية زيادة معدلات النقل مؤقتاً وستُستأنف تلقائياً عند اكتمال عملية إضافة / إزالة المنطقة.
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
تمكين مناطق الكتابة المتعددة
تمكين عمليات الكتابة متعددة المناطق لحساب Azure Cosmos DB
# 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
تعيين أولوية تجاوز الفشل
تعيين أولوية تجاوز الفشل لحساب Azure Cosmos DB الذي تم تكوينه لتجاوز الفشل المدار بواسطة الخدمة
# 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'
تمكين تجاوز الفشل المُدار بواسطة الخدمة
# 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
تشغيل تجاوز الفشل اليدوي
تنبيه
سيؤدي تغيير المنطقة ذات الأولوية = 0 إلى تشغيل تجاوز فشل يدوي لحساب Azure Cosmos DB. لن يؤدي أي تغيير آخر في الأولوية إلى حدوث تجاوز للفشل.
إشعار
إذا أجريت عملية تجاوز الفشل اليدوي أثناء عملية تحجيم سرعة نقل غير متزامنة قيد التقدم، فستقف عملية زيادة معدلات النقل مؤقتاً. سيتم استئنافها تلقائياً عند اكتمال عملية تجاوز الفشل.
# 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'
سرد كافة مفاتيح الحساب
احصل على جميع المفاتيح لحساب Azure Cosmos DB.
# List all account keys
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
az cosmosdb keys list \
-n $accountName \
-g $resourceGroupName
سرد مفاتيح الحساب للقراءة فقط
احصل على مفاتيح للقراءة فقط لحساب Azure Cosmos DB.
# List read-only account keys
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
az cosmosdb keys list \
-n $accountName \
-g $resourceGroupName \
--type read-only-keys
سرد سلاسل الاتصال
احصل على سلسلة الاتصال لحساب Azure Cosmos DB.
# List connection strings
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
az cosmosdb keys list \
-n $accountName \
-g $resourceGroupName \
--type connection-strings
إعادة تجديد مفاتيح الحساب
إعادة إنشاء مفتاح جديد لحساب Azure Cosmos DB.
# 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
توضح المقاطع التالية كيفية إدارة قاعدة بيانات Azure Cosmos DB، بما في ذلك:
- إنشاء قاعدة بيانات
- بناء قاعدة بيانات مع معدل نقل مشترك
- ترحيل قاعدة بيانات إلى معدل نقل بتحجيم تلقائي
- تغيير معدل نقل قاعدة البيانات
- منع حذف قاعدة بيانات
إنشاء قاعدة بيانات
إنشاء قاعدة بيانات في Azure Cosmos DB.
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
az cosmosdb sql database create \
-a $accountName \
-g $resourceGroupName \
-n $databaseName
بناء قاعدة بيانات مع معدل نقل مشترك
إنشاء قاعدة بيانات Azure Cosmos DB مع معدل النقل المشترك.
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
databaseName='database1'
throughput=400
az cosmosdb sql database create \
-a $accountName \
-g $resourceGroupName \
-n $databaseName \
--throughput $throughput
ترحيل قاعدة بيانات إلى معدل نقل بتحجيم تلقائي
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
تغيير معدل نقل قاعدة البيانات
زيادة معدل نقل قاعدة بيانات Azure Cosmos DB بمقدار 1000 RU/s.
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
منع حذف قاعدة بيانات
وضع تأمين حذف مورد Azure على قاعدة بيانات لمنع حذفه. تتطلب هذه الميزة تأمين حساب Azure Cosmos DB من التغيير بواسطة SDKs لمستوى البيانات. لمعرفة المزيد راجع، منع التغييرات من SDKs. يمكن أيضا أن يمنع تأمين مورد Azure مورد من التغيير عن طريق تحديد ReadOnly
نوع تأمين. بالنسبة لقاعدة بيانات Azure Cosmos DB، يمكن استخدامها لمنع تغيير معدل النقل.
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
توضح المقاطع التالية كيفية إدارة حاوية Azure Cosmos DB، بما في ذلك:
- إنشاء حاوية
- أنشاء حاوية ذات تحجيم تلقائي
- إنشاء حاوية مع تمكين TTL
- إنشاء حاوية بسياسة الفهرس المخصص
- تغيير معدل نقل الحاوية
- ترحيل حاوية إلى معدل نقل بتحجيم تلقائي
- منع حذف حاوية
إنشاء حاوية
إنشاء حاوية Azure Cosmos DB مع نهج الفهرس الافتراضي ومفتاح القسم و RU/s من 400.
# 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
أنشاء حاوية ذات تحجيم تلقائي
إنشاء حاوية Azure Cosmos DB مع نهج الفهرس الافتراضي ومفتاح القسم و RU/s للتحجيم التلقائي من 4000.
# 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
إنشاء حاوية مع تمكين TTL
إنشاء حاوية Azure Cosmos DB مع تمكين 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
إنشاء حاوية بسياسة الفهرس المخصص
إنشاء حاوية Azure Cosmos DB مع نهج فهرس مخصص، فهرس مكاني، فهرس مركب، مفتاح قسم و RU/s من 400.
# 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"
تغيير معدل نقل الحاوية
زيادة معدل نقل حاوية Azure Cosmos DB بمقدار 1000 RU/s.
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
ترحيل حاوية إلى معدل نقل بتحجيم تلقائي
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
منع حذف حاوية
وضع تأمين حذف مورد Azure على حاوية لمنع حذفه. تتطلب هذه الميزة تأمين حساب Azure Cosmos DB من التغيير بواسطة SDKs لمستوى البيانات. لمعرفة المزيد راجع، منع التغييرات من SDKs. يمكن أيضا أن يمنع تأمين مورد Azure مورد من التغيير عن طريق تحديد ReadOnly
نوع تأمين. بالنسبة لحاوية Azure Cosmos DB، يمكن استخدام الأقفال لمنع تغيير معدل النقل أو أي خاصية أخرى.
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
الخطوات التالية
لمزيد من المعلومات حول Azure CLI، راجع: