共用方式為


建立和管理 Azure Cosmos DB (預覽版) 中的容器複製作業

複製作業會協助在 Azure Cosmos DB 帳戶中建立容器的複本。

本文描述如何使用 Azure CLI 命令來建立、監視和管理複製作業。

先決條件

  • 您可以使用入口網站 Cloud Shell 來執行容器複製命令。 或者,您也可以在本機執行命令。 請確定您已在電腦上安裝 Azure CLI
  • 這些區域目前支援容器複製。 請確定您的帳戶寫入區域屬於此清單。
  • 安裝包含容器複製命令的 Azure Cosmos DB 預覽延伸模組。
    az extension add --name cosmosdb-preview
    

設定殼層變數

首先,設定個別指令碼將使用的所有變數。

$sourceSubId = "<source-subscription-id>" 
$destinationSubId = "<destination-subscription-id>" 
$sourceAccountRG = "<source-resource-group-name>"
$destinationAccountRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceContainer = ""
$destinationDatabase = ""
$destinationContainer = ""

指派讀取權限

附註

如果您要在相同的 Azure Cosmos DB 帳戶內複製數據,則不需要此步驟。

當將資料從一個帳戶的容器複製到另一個帳戶的容器時,您必須將來源容器的讀取權限授予目的地帳戶的身份標識。 請遵循下列步驟,將必要的讀取許可權指派給目的地帳戶。

使用系統管理的身分識別

  1. 設定目的地訂閱帳戶環境:
    az account set --subscription $destinationSubId
    
  2. 在目的地帳戶上新增系統身分識別:
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG
    $principalId = ($identityOutput | ConvertFrom-Json).principalId
    
  3. 在目的地帳戶上設定預設身分識別:
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
    
  4. 設定來源訂閱環境:
    az account set --subscription $sourceSubId
    
  5. 在來源帳戶上新增角色指派:
    # Read-only access role
    $roleDefinitionId = "00000000-0000-0000-0000-000000000001" 
    az cosmosdb sql role assignment create --account-name $sourceAccount --resource-group $sourceAccountRG --role-definition-id $roleDefinitionId --scope "/" --principal-id $principalId
    
  6. 重設目的地訂用帳戶內容:
    az account set --subscription $destinationSubId
    

使用使用者指派的受控識別

  1. 指派用戶分配的受管理的身份變數:
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. 設定目的地訂閱環境:
    az account set --subscription $destinationSubId
    
  3. 在目的地帳戶上新增使用者指派的受控識別:
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId
    $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
    
  4. 在目的地帳戶上設定預設身分識別:
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
    
  5. 設定來源訂閱環境
    az account set --subscription $sourceSubId
    
  6. 在來源帳戶上新增角色指派:
    $roleDefinitionId = "00000000-0000-0000-0000-000000000001"  # Read-only access role
    az cosmosdb sql role assignment create --account-name $sourceAccount --resource-group $sourceAccountRG --role-definition-id $roleDefinitionId --scope "/" --principal-id $principalId
    
  7. 重設目的地訂用帳戶內容:
    az account set --subscription $destinationSubId
    

建立複製工作

az cosmosdb copy create `
    --resource-group $destinationAccountRG `
    --job-name $jobName `
    --dest-account $destinationAccount `
    --src-account $sourceAccount `
    --dest-nosql database=$destinationDatabase container=$destinationContainer `
    --src-nosql database=$sourceDatabase container=$sourceContainer
    --mode Online

監視進度

使用此指令監視進度:

az cosmosdb copy show `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName
  • 總計計數 代表來源容器中任何指定時間的變更總數(檔案總計 + 任何新變更)。
  • 已處理的計數 代表來自來源容器變更摘要的事件總數,這些事件是由複製作業所處理。

完成複製工作

  1. 當已處理的計數大於或等於總計數時,請關閉來源容器上的任何更新,並等候 5-10 分鐘以排清任何剩餘的變更。
  2. 執行完成 API 以完成複製作業並釋放計算資源,這也會將剩餘的變更(如果有的話)寫入目的地容器。
    az cosmosdb copy complete `
        --resource-group $destinationAccountRG `
        --account-name $destinationAccount `
        --job-name $jobName
  1. 視需要更新用戶端應用程式以開始使用新的 (目的地) 容器。

設定殼層變數

首先,設定個別指令碼將使用的所有變數。

$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceCollection = ""
$destinationDatabase = ""
$destinationCollection = ""

建立複製工作

建立工作以複製 Azure Cosmos DB API for MongoDB 帳戶內的集合:

az cosmosdb copy create `
    --resource-group $destinationRG `
    --job-name $jobName `
    --dest-account $destinationAccount `
    --src-account $sourceAccount `
    --dest-mongo database=$destinationDatabase collection=$destinationCollection `
    --src-mongo database=$sourceDatabase collection=$sourceCollection 

附註

帳戶內每個作業的 --job-name 應是唯一的。

設定殼層變數

首先,設定個別指令碼將使用的所有變數。

$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceKeySpace = ""
$sourceTable = ""
$destinationKeySpace = ""
$destinationTable = ""

建立複製工作

建立工作以複製 Azure Cosmos DB for Apache Cassandra 帳戶內的資料表:

az cosmosdb copy create `
    --resource-group $destinationRG `
    --job-name $jobName `
    --dest-account $destinationAccount `
    --src-account $sourceAccount `
    --dest-cassandra keyspace=$destinationKeySpace table=$destinationTable `
    --src-cassandra keyspace=$sourceKeySpace table=$sourceTable 

附註

帳戶內每個作業的 --job-name 應是唯一的。

管理複製工作

監視複製工作的進度

檢視複製作業的進度和狀態:

az cosmosdb copy show `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

列出在帳戶中建立的所有複製工作

若要列出在帳戶中建立的所有複製工作:

az cosmosdb copy list `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount

暫停複製工作

若要暫停進行中的複製工作,您可以使用命令:

az cosmosdb copy pause `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

繼續複製工作

若要繼續進行中的複製作業,您可以使用此命令:

az cosmosdb copy resume `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

取消複製工作

若要取消進行中的複製作業,您可以使用此命令:

az cosmosdb copy cancel `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

取得複製問題的支援

如需複製工作的相關問題,請從 Azure 入口網站提出新的支援要求。 將 [問題類型 ] 設定為 [資料遷移 ],並將 [問題] 子類型 設定為 [容器複製]。

後續步驟

  • 如需容器複製工作的詳細資訊,請參閱複製工作