Fazer backup de Discos Gerenciados do Azure usando a CLI do Azure
Este artigo descreve como fazer backup do Disco Gerenciado do Azure usando a CLI do Azure.
Importante
O suporte para backup e restauração do Azure Managed Disks via CLI está em visualização e disponível como uma extensão na versão Az 2.15.0 e posterior. 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 do Disco do Azure, cenários suportados e limitações, 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 para várias cargas de trabalho mais recentes suportadas pelo Backup do Azure, como o Banco de Dados do Azure para servidores PostgreSQL, blobs em uma conta de armazenamento e Discos do Azure. Os cofres de backup facilitam a organização dos dados de backup e, ao mesmo tempo, minimizam a sobrecarga de gerenciamento. Os cofres de backup são baseados no modelo do Azure Resource Manager do Azure, que fornece recursos aprimorados para ajudar a proteger os dados de backup.
Antes de criar um cofre de backup, escolha a redundância de armazenamento dos dados dentro do cofre. Em seguida, prossiga para criar o cofre de backup com essa redundância de armazenamento e o local. Neste artigo, criaremos um cofre de backup TestBkpVault, na região westus, sob o 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": "2ca1d5f7-38b3-4b61-aa45-8147d7e0edbc",
"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 para o Backup de Disco do Azure, recupere o modelo de política usando o comando az dataprotection backup-policy get-default-policy-template . Este 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 aciona 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 para trigger são um gatilho agendado para cada 4 horas (PT4H) e para reter 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 Azure Disk Backup oferece vários backups por dia. Se você precisar de backups mais frequentes, escolha a frequência de backup por hora com a capacidade de fazer backups com intervalos de 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 os backups sejam distribuídos igualmente ao longo do dia. Se um backup diário for suficiente, escolha a frequência de backup diária . Na frequência diária de backup, você pode especificar a hora do dia em que os backups são feitos.
Importante
A hora do dia indica a hora de início do backup e não a hora em que o backup é concluído.
O tempo necessário para concluir a operação de backup depende de vários fatores, incluindo o tamanho do disco e a taxa de 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.
Nota
Embora o cofre selecionado possa ter a configuração de redundância global, atualmente, o Backup de Disco do Azure oferece suporte apenas ao armazenamento de dados de instantâneo. Todos os backups são armazenados em um grupo de recursos em sua 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, consulte o documento de política do 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 necessário. Em seguida, crie uma nova política com o JSON resultante. Se quiser editar a frequência horária 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 de política tiver todos os valores necessários, prossiga para criar uma nova política a partir do 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 a cópia de segurança
Depois que o cofre e a política são criados, há três pontos críticos que você precisa considerar para proteger um Disco do Azure.
Principais entidades envolvidas
Disco a proteger
Procure o ID ARM e a localização do disco a proteger. Isso servirá como o identificador do disco. Usaremos um exemplo de um disco chamado CLITestDisk, em um diskrg de grupo de recursos, em uma assinatura diferente.
$DiskId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk"
Grupo de recursos de Snapshot
Os instantâneos de disco são armazenados em um grupo de recursos dentro de sua assinatura. Como diretriz, recomendamos a criação de um grupo de recursos dedicado como um armazenamento de dados de instantâneo a ser usado pelo serviço de Backup do Azure. Ter um grupo de recursos dedicado permite restringir as permissões de acesso no grupo de recursos, proporcionando segurança e facilidade de gerenciamento dos dados de backup. Observe a ID ARM do grupo de recursos onde você deseja colocar os instantâneos de disco
$snapshotrg = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/snapshotrg"
Backup vault
Os cofres de backup exigem permissões no disco e no grupo de recursos de instantâneo para poder disparar instantâneos e gerenciar seu ciclo de vida. A identidade gerenciada atribuída pelo 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 para o Recovery Services Vault.
az dataprotection backup-vault update -g testBkpVaultRG --vault-name TestBkpVault --type SystemAssigned
Atribuir permissões
Você precisa atribuir algumas permissões via RBAC ao vault (representado pelo vault MSI) e ao disco relevante e/ou ao RG do disco. Eles podem ser executados por meio do portal do Azure ou da CLI. Para atribuir permissões relacionadas, consulte os pré-requisitos para configurar o backup de discos gerenciados.
Preparar o pedido
Uma vez que todas as permissões relevantes são definidas, a configuração do backup é realizada em duas etapas. Primeiro, preparamos a solicitação relevante usando o grupo de recursos de cofre, política, disco e instantâneo relevante usando o comando az dataprotection backup-instance initialize . O comando initialize retornará um arquivo JSON e, em seguida, você precisará atualizar o valor do grupo de recursos de instantâneo. Em seguida, 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 o ID do grupo de recursos de instantâneo na data_store_parameters_list
resource_group_id
seção abaixo.
{
"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"
}
]
}
}
}
}
Nota
O nome da instância de backup é gerado pelos clientes para que esse seja um valor exclusivo. Baseia-se no nome da fonte de dados e em um GUID exclusivo. Depois de listar as instâncias de backup, você deve ser capaz de 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á acionar um backup sob demanda se não quiser aguardar o agendamento da política.
Executar uma cópia de segurança a pedido
Liste todas as instâncias de backup em um vault usando o comando az dataprotection backup-instance list e, em seguida, busque a instância relevante usando o comando az dataprotection backup-instance show . Como alternativa, para cenários em escala, você pode listar instâncias de backup em 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 um nome de marca ao acionar o backup. Para visualizar as regras na política, examine o JSON da política. No exemplo a seguir, a regra com o nome "BackupDaily"
e o nome "default"
da marca é 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
}
Acione 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 específico do trabalho.
Você também pode usar 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