Fazer backup dos Managed Disks do Azure por meio da CLI do Azure
Este artigo descreve como fazer backup de um disco gerenciado do Azure usando a CLI do Azure.
Importante
O suporte para backup e restauração de Managed Disks do Azure por meio da CLI está em versão prévia e disponível como uma extensão nas versões Az 2.15.0 e posteriores. A extensão é instalada automaticamente quando você executa os comandos az dataprotection. Saiba mais sobre extensões.
Para obter informações sobre a disponibilidade da região de backup de um Azure Disk, cenários e limitações compatíveis, consulte a matriz de suporte.
Criar um cofre de backup
O cofre de backup é uma entidade de armazenamento no Azure que armazena dados de backup de várias cargas de trabalho mais recentes com suporte no Backup do Azure, como servidores do Banco de Dados do Azure para PostgreSQL, blobs em uma conta de armazenamento e discos do Azure. Os cofres de backup facilitam a organização dos dados de backup, minimizando a sobrecarga de gerenciamento. Os cofres de backup são baseados no modelo de Azure Resource Manager do Azure, que fornece recursos avançados para ajudar a proteger os dados de backup.
Para criar um cofre de backup, escolha a redundância de armazenamento dos dados no cofre. Depois, crie o cofre de backup com essa redundância de armazenamento e a localização. Neste artigo, criaremos um Cofre de backup TestBkpVault, na região westus, no grupo de recursos testBkpVaultRG. Use o comando az dataprotection vault create para criar um Cofre de backup. Saiba mais sobre como criar um cofre de backup.
az dataprotection backup-vault create -g testBkpVaultRG --vault-name TestBkpVault -l westus --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"
{
"eTag": null,
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault",
"identity": {
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
},
"location": "westus",
"name": "TestBkpVault",
"properties": {
"provisioningState": "Succeeded",
"storageSettings": [
{
"datastoreType": "VaultStore",
"type": "LocallyRedundant"
}
]
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"tags": null,
"type": "Microsoft.DataProtection/backupVaults"
}
Após a criação do cofre, vamos criar uma política de backup para proteger os discos do Azure.
Criar uma política de backup
Para entender os componentes internos de uma política de backup do backup de disco do Azure, recupere o modelo de política usando o comando az dataprotection backup-policy get-default-policy-template. Esse comando retorna um modelo de política padrão para um determinado tipo de fonte de dados. Use este modelo de política para criar uma nova política.
az dataprotection backup-policy get-default-policy-template --datasource-type AzureDisk
{
"datasourceTypes": [
"Microsoft.Compute/disks"
],
"name": "DiskPolicy",
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Incremental",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupHourly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2020-04-05T13:00:00+00:00/PT4H"
]
},
"taggingCriteria": [
{
"isDefault": true,
"tagInfo": {
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P7D",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
}
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
}
O modelo de política consiste em um gatilho (que decide o que dispara o backup) e um ciclo de vida (que decide quando excluir/copiar/mover o backup). No backup de disco do Azure, os valores padrão do gatilho são um gatilho agendado para cada quatro horas (PT4H) e para manter cada backup por sete dias.
Gatilho agendado:
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2020-04-05T13:00:00+00:00/PT4H"
]
}
}
Ciclo de vida de retenção padrão:
"lifecycles": [
{
"deleteAfter": {
"duration": "P7D",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
}
}
]
O backup do Azure Disk oferece vários backups por dia. Se precisar de uma frequência de backups maior, escolha a frequência de backup por Hora com a capacidade de fazer backups com intervalos a cada 4, 6, 8 ou 12 horas. Os backups são agendados com base no intervalo de Tempo selecionado.
Por exemplo, se você selecionar a Cada 4 horas, os backups serão feitos aproximadamente no intervalo de cada 4 horas para que sejam distribuídos igualmente ao longo do dia. Se um backup diário for suficiente, escolha a frequência de backup Diário. Na frequência de backup diária, você pode especificar a hora do dia em que os backups são feitos.
Importante
A hora do dia indica o horário de início do backup e não o horário em que o backup é concluído.
O tempo necessário para concluir a operação de backup depende de vários fatores, como o tamanho do disco e a rotatividade entre backups consecutivos. No entanto, o backup de disco do Azure é um backup sem agente que usa instantâneos incrementais, o que não afeta o desempenho do aplicativo de produção.
Observação
Embora o cofre selecionado possa ter a configuração de redundância global, no momento, o backup de disco do Azure dá suporte apenas ao armazenamento de dados de instantâneos. Todos os backups são armazenados em um grupo de recursos na assinatura e não são copiados para o armazenamento do cofre de backup.
Para saber mais detalhes sobre a criação de políticas, confira o documento Política de backup de disco do Azure.
Depois que o modelo for baixado como um arquivo JSON, você poderá editá-lo para agendamento e retenção, conforme o necessário. Depois, crie uma política com o JSON resultante. Se você quiser editar a frequência por hora ou o período de retenção, use os comandos az dataprotection backup-policy trigger set e/ou az dataprotection backup-policy retention-rule set. Quando o JSON da política tiver todos os valores necessários, crie uma política com base no objeto de política usando o comando az dataprotection backup-policy create.
az dataprotection backup-policy get-default-policy-template --datasource-type AzureDisk > policy.json
az dataprotection backup-policy create -g testBkpVaultRG --vault-name TestBkpVault -n mypolicy --policy policy.json
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupPolicies/mypolicy",
"name": "mypolicy",
"properties": {
"datasourceTypes": [
"Microsoft.Compute/disks"
],
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Incremental",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupHourly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2020-04-05T13:00:00+00:00/PT4H"
]
},
"taggingCriteria": [
{
"criteria": null,
"isDefault": true,
"tagInfo": {
"eTag": null,
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P7D",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": null
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}
Configurar backup
Depois que o cofre e a política forem criados, haverá três pontos críticos a serem considerados para proteger um disco do Azure.
Entidades-chave envolvidas
Disco a ser protegido
Busque a ID do ARM e a localização do disco a ser protegido. Isso funcionará como o identificador do disco. Usaremos o exemplo de um disco chamado CLITestDisk no grupo de recursos diskrg em uma assinatura diferente.
$DiskId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk"
Grupo de recursos de instantâneo
Os instantâneos do disco estão armazenados em um grupo de recursos na sua assinatura. Como diretriz, é recomendado criar um grupo de recursos dedicado como um armazenamento de dados de instantâneo a ser usado pelo serviço de Backup do Azure. Com um grupo de recursos dedicado, é possível restringir as permissões de acesso no grupo de recursos, fornecendo segurança e facilidade de gerenciamento dos dados de backup. Observe a ID do ARM para o grupo de recursos em que você deseja inserir os instantâneos do disco
$snapshotrg = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/snapshotrg"
Cofre de backup
Os cofres de backup exigem permissões no disco e no grupo de recursos de instantâneo para poder disparar instantâneos e gerenciar os respectivos ciclos de vida. A identidade gerenciada atribuída ao sistema do cofre é usada para atribuir essas permissões. Use o comando az dataprotection backup-vault update para habilitar a identidade gerenciada atribuída pelo sistema no cofre dos Serviços de Recuperação.
az dataprotection backup-vault update -g testBkpVaultRG --vault-name TestBkpVault --type SystemAssigned
Atribuir permissões
Você precisa atribuir algumas permissões ao cofre por meio do RBAC (representado pela MSI do cofre) e ao disco relevante e/ou ao RG do disco. Esse processo pode ser executado por meio do portal ou da CLI do Azure. Para atribuir permissões relacionadas, confira os pré-requisitos para configurar o backup de discos gerenciados.
Preparar a solicitação
Depois que todas as permissões relevantes forem definidas, a configuração do backup será executada em duas etapas. Primeiro, preparamos a solicitação relevante usando o cofre, a política, o disco e o grupo de recursos de instantâneo relevantes por meio do comando az dataprotection backup-instance initialize. O comando initialize retorna um arquivo JSON para que você possa atualizar o valor do grupo de recursos de instantâneo. Depois, enviamos a solicitação para proteger o disco usando o comando az dataprotection backup-instance create.
az dataprotection backup-instance initialize --datasource-type AzureDisk -l southeastasia --policy-id "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupPolicies/mypolicy" --datasource-id "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk" > backup_instance.json
Abra o arquivo JSON e edite a ID do grupo de recursos de instantâneo em resource_group_id
na seção data_store_parameters_list
.
{
"backup_instance_name": "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
"properties": {
"data_source_info": {
"datasource_type": "Microsoft.Compute/disks",
"object_type": "Datasource",
"resource_id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
"resource_location": "southeastasia",
"resource_name": "CLITestDisk",
"resource_type": "Microsoft.Compute/disks",
"resource_uri": ""
},
"data_source_set_info": null,
"object_type": "BackupInstance",
"policy_info": {
"policy_id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupPolicies/DiskPolicy",
"policy_parameters": {
"data_store_parameters_list": [
{
"data_store_type": "OperationalStore",
"object_type": "AzureOperationalStoreParameters",
"resource_group_id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/snapshotrg"
}
]
}
}
}
}
Observação
O nome da instância de backup é gerado para cada cliente, portanto, esse valor será exclusivo. Ele se baseia no nome da fonte de dados e em um GUID exclusivo. Depois de listar as instâncias de backup, você poderá verificar o nome da instância de backup e o nome da fonte de dados relevante.
Use o arquivo JSON editado para criar uma instância de backup do disco gerenciado do Azure.
az dataprotection backup-instance create -g testBkpVaultRG --vault-name TestBkpVault --backup-instance backup_instance.json
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupInstances/diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
"name": "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
"properties": {
"currentProtectionState": "ProtectionConfigured",
"dataSourceInfo": {
"datasourceType": "Microsoft.Compute/disks",
"objectType": "Datasource",
"resourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
"resourceLocation": "southeastasia",
"resourceName": "CLITestDisk",
"resourceType": "Microsoft.Compute/disks",
"resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk"
},
"dataSourceSetInfo": null,
"friendlyName": "CLITestDisk",
"objectType": "BackupInstance",
"policyInfo": {
"policyId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupPolicies/DiskPolicy",
"policyParameters": {
"dataStoreParametersList": [
{
"dataStoreType": "OperationalStore",
"objectType": "AzureOperationalStoreParameters",
"resourceGroupId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/sarath-rg"
}
]
},
"policyVersion": null
},
"protectionErrorDetails": null,
"protectionStatus": {
"errorDetails": null,
"status": "ProtectionConfigured"
},
"provisioningState": "Succeeded"
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupInstances"
}
Depois que a instância de backup for criada, você poderá disparar um backup sob demanda se não quiser aguardar o agendamento da política.
Executar um backup sob demanda
Liste todas as instâncias de backup no cofre usando o comando az dataprotection backup-instance list e busque a instância relevante com o comando az dataprotection backup-instance show. Como alternativa, para cenários em escala, você pode listar as instâncias de backup entre cofres e assinaturas usando o comando az dataprotection backup-instance list-from-resourcegraph.
az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureDisk --datasource-id /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk
[
{
"datasourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
"extendedLocation": null,
"id": "//subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupInstances/diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
"identity": null,
"kind": "",
"location": "",
"managedBy": "",
"name": "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
"plan": null,
"properties": {
"currentProtectionState": "ProtectionConfigured",
"dataSourceInfo": {
"baseUri": null,
"datasourceType": "Microsoft.Compute/disks",
"objectType": "Datasource",
"resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
"resourceLocation": "westus",
"resourceName": "CLITestDisk",
"resourceType": "Microsoft.Compute/disks",
"resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk"
},
"dataSourceProperties": null,
"dataSourceSetInfo": null,
"datasourceAuthCredentials": null,
"friendlyName": "CLITestDisk",
"objectType": "BackupInstance",
"policyInfo": {
"policyId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupPolicies/DiskPolicy",
"policyParameters": {
"dataStoreParametersList": [
{
"dataStoreType": "OperationalStore",
"objectType": "AzureOperationalStoreParameters",
"resourceGroupId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/snapshotrg"
}
]
},
"policyVersion": null
},
"protectionErrorDetails": null,
"protectionStatus": {
"errorDetails": null,
"status": "ProtectionConfigured"
},
"provisioningState": "Succeeded"
},
"protectionState": "ProtectionConfigured",
"resourceGroup": "testBkpVaultRG",
"sku": null,
"subscriptionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tags": null,
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "microsoft.dataprotection/backupvaults/backupinstances",
"vaultName": "TestBkpVault",
"zones": null
}
]
Você pode especificar uma regra e uma marca ao disparar o backup. Para exibir as regras na política, examine o JSON da política. No exemplo a seguir, a regra com o nome "BackupDaily"
e o nome de marca "default"
é exibida e usaremos essa regra para o backup sob demanda.
"name": "BackupDaily",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2022-09-27T23:30:00+00:00/P1D"
],
"timeZone": "UTC"
},
"taggingCriteria": [
{
"criteria": null,
"isDefault": true,
"tagInfo": {
"eTag": null,
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
Dispare um backup sob demanda usando o comando az dataprotection backup-instance adhoc-backup.
az dataprotection backup-instance adhoc-backup --name "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166" --rule-name "BackupDaily" --resource-group "000pikumar" --vault-name "PratikPrivatePreviewVault1" --retention-tag-override "default"
Acompanhar trabalhos
Acompanhe todos os trabalhos usando o comando az dataprotection job list. Você pode listar todos os trabalhos e buscar um detalhe de trabalho específico.
Você também pode usar o Az.ResourceGraph para acompanhar todos os trabalhos em todos os cofres de backup. Use o comando az dataprotection job list-from-resourcegraph para obter o trabalho relevante que pode estar em qualquer cofre de backup.
az dataprotection job list-from-resourcegraph --datasource-type AzureDisk --status Completed