Создание заданий копирования контейнеров и управление ими в Azure Cosmos DB (предварительная версия)
Область применения: Nosql Mongodb Кассандра
Задания копирования контейнеров помогают создавать автономные копии контейнеров в учетных записях Azure Cosmos DB.
В этой статье описывается создание, мониторинг заданий копирования контейнеров и управление ими с помощью команд Azure CLI.
Необходимые компоненты
- Вы можете использовать портал Cloud Shell для выполнения команд копирования контейнеров. Кроме того, можно выполнять команды локально; Убедитесь, что на компьютере скачан и установлен Azure CLI .
- Сейчас копирование контейнера поддерживается только в этих регионах. Убедитесь, что регион записи вашей учетной записи находится в этом списке.
- Установите расширение предварительной версии Azure Cosmos DB, содержащее команды копирования контейнеров.
az extension add --name cosmosdb-preview
Примечание.
Задание копирования контейнеров в учетных записях Azure Cosmos DB доступно только для учетной записи API NoSQL. Задание копирования контейнеров в учетной записи Azure Cosmos DB доступно для учетных записей API NoSQL, MongoDB и Cassandra.
Создание задания копирования контейнера для копирования данных в учетной записи Azure Cosmos DB
Настройка переменных оболочки
Сначала задайте все переменные, которые используют каждый отдельный скрипт.
$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceContainer = ""
$destinationDatabase = ""
$destinationContainer = ""
Создание задания копирования контейнеров
Учетная запись API для NoSQL
Создайте задание для копирования контейнера в учетной записи API Azure Cosmos DB для NoSQL:
az cosmosdb copy create `
--resource-group $destinationRG `
--job-name $jobName `
--dest-account $destinationAccount `
--src-account $sourceAccount `
--dest-nosql database=$destinationDatabase container=$destinationContainer `
--src-nosql database=$sourceDatabase container=$sourceContainer
API для учетной записи Cassandra
Создайте задание для копирования контейнера в API Azure Cosmos DB для учетной записи 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
Учетная запись API для MongoDB
Создайте задание для копирования контейнера в учетной записи API Azure Cosmos DB для 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
должен быть уникальным для каждого задания в учетной записи.
Создание задания копирования контейнера для копирования данных в учетных записях Azure Cosmos DB
Настройка переменных оболочки
Сначала задайте все переменные, которые используют каждый отдельный скрипт.
$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 = ""
Назначение разрешения на чтение
При копировании данных из контейнера одной учетной записи в контейнер другой учетной записи. Для выполнения операции копирования необходимо предоставить доступ на чтение исходного контейнера к удостоверению целевой учетной записи. Выполните приведенные ниже действия, чтобы назначить требуемое разрешение на чтение целевой учетной записи.
Использование управляемого удостоверения системы
- Настройка контекста целевой подписки
az account set --subscription $destinationSubId
- Добавление системного удостоверения в целевой учетной записи
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG $principalId = ($identityOutput | ConvertFrom-Json).principalId
- Установка удостоверения по умолчанию в целевой учетной записи
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
- Настройка контекста исходной подписки
az account set --subscription $sourceSubId
- Добавление назначения ролей в исходной учетной записи
# 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
- Сброс контекста целевой подписки
az account set --subscription $destinationSubId
Использование управляемого удостоверения, назначаемого пользователем
- Назначение назначаемой пользователем переменной управляемого удостоверения
$userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
- Настройка контекста целевой подписки
az account set --subscription $destinationSubId
- Добавление управляемого удостоверения, назначаемого пользователем, в целевой учетной записи
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
- Установка удостоверения по умолчанию в целевой учетной записи
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
- Настройка контекста исходной подписки
az account set --subscription $sourceSubId
- Добавление назначения ролей в исходной учетной записи
$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
- Сброс контекста целевой подписки
az account set --subscription $destinationSubId
Создание задания копирования контейнеров
Учетная запись API для NoSQL
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
Управление заданиями копирования контейнеров
Мониторинг хода выполнения задания копирования контейнера
Проконтролируйте хода выполнения и состояние задания копирования:
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. Задайте тип проблемы как "Миграция данных" и подтип проблемы как "Копирование контейнера".
Следующие шаги
- Дополнительные сведения о заданиях копирования контейнеров см. в разделе "Задания копирования контейнеров".