Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como fazer backup de bancos de dados PostgreSQL em Máquinas Virtuais do Azure usando a CLI do Azure. Você também pode configurar o backup usando o portal do Azure, o Azure PowerShell e a API REST para bancos de dados PostgreSQL.
Saiba mais sobre os cenários com suporte e perguntas frequentes sobre como fazer backup do Banco de Dados do Azure para PostgreSQL.
Criar um cofre de backup
Um cofre de backup é uma entidade de armazenamento no Azure. Ele armazena os dados de backup de novas cargas de trabalho com suporte do 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 ajudam 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 a redundância de armazenamento desejada e a localização específica.
Neste artigo, você criará um cofre de Backup com o nome TestBkpVault
, na westus
região, no grupo de recursos testBkpVaultRG
. Use o az dataprotection vault create
comando 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"
}
Criar uma política de backup
Depois de criar um cofre, você pode criar uma política de backup para ajudar a proteger bancos de dados PostgreSQL. Você também pode criar uma política de backup para bancos de dados PostgreSQL usando a API REST.
Entender a política de backup do PostgreSQL
Enquanto o backup em disco oferece vários backups por dia e o backup de blobs é um backup contínuo sem gatilho, o backup do PostgreSQL oferece proteção de arquivo. Os dados de backup que são enviados primeiro para o cofre podem ser movidos para a camada de arquivamento de acordo com uma regra definida ou um ciclo de vida.
Nesse contexto, a hierarquia a seguir pode ajudá-lo a entender o objeto de política de backup do PostgreSQL:
- Regra de política
- Regra de backup
- Parâmetro de backup
- Tipo de backup (um backup de banco de dados completo nesse caso)
- Armazenamento de dados inicial (em que os backups chegam inicialmente)
- Gatilho (como o backup é acionado)
- Cronograma
- Critérios de marcação padrão (uma marca padrão que vincula todos os backups agendados à regra de retenção)
- Parâmetro de backup
- Regra de retenção padrão (uma regra que é aplicada a todos os backups, por padrão, no armazenamento de dados inicial)
- Regra de backup
O objeto de política define quais tipos de backups são acionados, como são acionados (por meio de um agendamento), com o que são marcados, onde são armazenados (um armazenamento de dados) e o ciclo de vida de seus dados em um armazenamento de dados.
O objeto padrão do PowerShell para PostgreSQL diz para acionar um backup completo toda semana. Os backups chegam ao cofre, onde ficam armazenados por três meses.
Se você quiser adicionar a camada de arquivo morto à política, será necessário decidir quando os dados serão movidos do cofre para o arquivo morto, por quanto tempo os dados permanecerão no arquivo morto e quais dos backups agendados devem ser marcados como arquiváveis. Você precisa adicionar uma regra de retenção que defina o ciclo de vida dos dados de backup do armazenamento de dados do cofre para o armazenamento de dados de arquivamento. A regra de retenção também define por quanto tempo os dados de backup permanecerão no armazenamento de dados de arquivos. Em seguida, você precisa adicionar uma marca que marque os backups agendados como qualificados para serem arquivados.
O objeto resultante do PowerShell é o seguinte:
- Regra de política
- Regra de backup
- Parâmetro de backup
- Tipo de backup (um backup de banco de dados completo nesse caso)
- Armazenamento de dados inicial (em que os backups chegam inicialmente)
- Gatilho (como o backup é acionado)
- Cronograma
- Critérios de marcação padrão (uma marca padrão que vincula todos os backups agendados à regra de retenção)
- Novos critérios de marcação para a nova regra de retenção com o mesmo nome
- Parâmetro de backup
- Regra de retenção padrão (uma regra que é aplicada a todos os backups, por padrão, no armazenamento de dados inicial)
- Nova regra de retenção
- Ciclo de vida
- Armazenamento de dados de origem
- Período de tempo para exclusão no armazenamento de dados de origem
- Copiar para o datastore de destino
- Ciclo de vida
- Regra de backup
Recuperar o modelo de política
Para entender os componentes internos de uma política de backup para backup do banco de dados PostgreSQL, recupere o modelo de política usando o az dataprotection backup-policy get-default-policy-template
comando. Esse comando retorna o modelo de política padrão para um 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 AzureDatabaseForPostgreSQL
{
"datasourceTypes": [
"Microsoft.DBforPostgreSQL/servers/databases"
],
"name": "OssPolicy1",
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Full",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupWeekly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T06:30:00+00:00/P1W"
],
"timeZone": "UTC"
},
"taggingCriteria": [
{
"isDefault": true,
"tagInfo": {
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"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 ou mover o backup). Em um backup de banco de dados PostgreSQL, o valor padrão do gatilho é um gatilho semanal agendado (um backup a cada sete dias). Cada backup é mantido por três meses.
Gatilho agendado
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T06:30:00+00:00/P1W"
],
"timeZone": "UTC"
}
Ciclo de vida padrão da regra de detenção
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
Modificar o modelo de política
No Azure PowerShell, você pode usar objetos como locais de preparo para executar todas as modificações. Na CLI do Azure, você precisa usar arquivos, pois não há noção de objetos. Cada operação de edição deve ser redirecionada para um novo arquivo, em que o conteúdo é lido do arquivo de entrada e redirecionado para o arquivo de saída. Posteriormente, você pode renomear o arquivo conforme necessário ao usá-lo em um script.
Modificar o agendamento
O modelo de política padrão oferece um backup uma vez por semana. Você pode modificar a agenda para que o backup ocorra vários dias por semana. Para modificar o agendamento, use o az dataprotection backup-policy trigger set
comando.
O exemplo a seguir modifica o backup semanal para domingo, quarta e sexta-feira de cada semana. A matriz de datas da agenda menciona as datas, e os dias correspondentes são considerados dias da semana. Você também precisa especificar que essas agendas devem ser repetidas toda semana. Portanto, o intervalo de agendamento é 1
e o tipo de intervalo é Weekly
.
az dataprotection backup-policy trigger create-schedule --interval-type Weekly --interval-count 1 --schedule-days 2021-08-15T22:00:00 2021-08-18T22:00:00 2021-08-20T22:00:00
[
"R/2021-08-15T22:00:00+00:00/P1W",
"R/2021-08-18T22:00:00+00:00/P1W",
"R/2021-08-20T22:00:00+00:00/P1W"
]
az dataprotection backup-policy trigger set --policy .\OSSPolicy.json --schedule R/2021-08-15T22:00:00+00:00/P1W R/2021-08-18T22:00:00+00:00/P1W R/2021-08-20T22:00:00+00:00/P1W > EditedOSSPolicy.json
Adicionar uma nova regra de retenção
Se você quiser adicionar proteção contra arquivos, será necessário modificar o modelo de política.
O modelo padrão tem um ciclo de vida para o armazenamento de dados inicial sob a regra de retenção padrão. Nesse cenário, a regra diz para excluir os dados de backup após três meses. Você deve adicionar uma nova regra de retenção que define quando os dados são movidos para o datastore de arquivo. Ou seja, os dados de backup são primeiro copiados para o armazenamento de dados de arquivamento e depois são excluídos no armazenamento de dados do cofre.
Além disso, a regra deve definir por quanto tempo manter os dados no banco de dados de arquivo. Para criar novos ciclos de vida, use o az dataprotection backup-policy retention-rule create-lifecycle
comando. Para associar esses ciclos de vida a regras novas ou existentes, use o az dataprotection backup-policy retention-rule set
comando.
O exemplo a seguir cria uma nova regra de retenção chamada Monthly
. Nessa regra, o primeiro backup bem-sucedido de cada mês é mantido no cofre por seis meses, movido para a camada de arquivo morto e mantido na camada de arquivo morto por 24 meses.
az dataprotection backup-policy retention-rule create-lifecycle --retention-duration-count 6 --retention-duration-type Months --source-datastore VaultStore --target-datastore ArchiveStore --copy-option CopyOnExpiryOption > VaultToArchiveLifeCycle.JSON
az dataprotection backup-policy retention-rule create-lifecycle --retention-duration-count 24 --retention-duration-type Months -source-datastore ArchiveStore > OnArchiveLifeCycle.JSON
az dataprotection backup-policy retention-rule set --lifecycles .\VaultToArchiveLifeCycle.JSON .\OnArchiveLifeCycle.JSON --name Monthly --policy .\EditedOSSPolicy.JSON > AddedRetentionRulePolicy.JSON
Adicionar uma etiqueta e os critérios relevantes
Depois de criar uma regra de retenção, você precisa criar uma marca correspondente na propriedade Trigger
da política de backup. Para criar novos critérios de marcação, use o az dataprotection backup-policy tag create-absolute-criteria
comando. Para atualizar a marca existente ou criar uma nova marca, use o az dataprotection backup-policy tag set
comando.
O exemplo a seguir cria uma nova marcas junto com o critério, que é o primeiro backup bem-sucedido do mês. A tag tem o mesmo nome que a regra de retenção correspondente a ser aplicada.
Neste exemplo, os critérios de tag são nomeados Monthly
:
az dataprotection backup-policy tag create-absolute-criteria --absolute-criteria FirstOfMonth > tagCriteria.JSON
az dataprotection backup-policy tag set --criteria .\tagCriteria.JSON --name Monthly --policy .\AddedRetentionRulePolicy.JSON > AddedRetentionRuleAndTag.JSON
Se o agendamento for de vários backups por semana (todos os domingos, quartas e quintas-feiras, conforme especificado no exemplo anterior) e você quiser arquivar os backups de domingo e sexta-feira, você poderá alterar os critérios de marcação usando o az dataprotection backup-policy tag create-generic-criteria
comando:
az dataprotection backup-policy tag create-generic-criteria --days-of-week Sunday Friday > tagCriteria.JSON
az dataprotection backup-policy tag set --criteria .\tagCriteria.JSON --name Monthly --policy .\AddedRetentionRulePolicy.JSON > AddedRetentionRuleAndTag.JSON
Criar uma nova política de backup do PostgreSQL
Depois de modificar o modelo de acordo com os requisitos, use o az dataprotection backup-policy create
comando para criar uma política usando o modelo modificado:
az dataprotection backup-policy create --backup-policy-name FinalOSSPolicy --policy AddedRetentionRuleAndTag.JSON --resource-group testBkpVaultRG --vault-name TestBkpVault
Configurar backup
Depois de criar o cofre e a política, você precisa considerar três pontos críticos para fazer backup de um banco de dados PostgreSQL no Banco de Dados do Azure para PostgreSQL.
Entender as principais entidades
Banco de dados PostgreSQL a ser feito backup
Busque a ID do Resource Manager do banco de dados PostgreSQL para fazer backup. Essa ID serve como o identificador do banco de dados. O exemplo a seguir usa um banco de dados nomeado empdb11
no servidor testposgresql
PostgreSQL, que está presente no grupo ossrg
de recursos em uma assinatura diferente. O exemplo usa Bash.
ossId="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/servers/archive-postgresql-ccy/databases/empdb11"
Cofre de chaves criptográficas
O serviço do Backup do Azure não armazena o nome de usuário e a senha para se conectar ao banco de dados PostgreSQL. Em vez disso, o administrador de backup semeia as chaves no cofre de chaves. O serviço de Backup do Azure acessa o cofre de chaves, lê as chaves e acessa o banco de dados.
O exemplo a seguir usa Bash. Observe o identificador secreto da chave relevante.
keyURI="https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"
Cofre de backup
Um cofre de backup precisa se conectar ao servidor PostgreSQL e, em seguida, acessar o banco de dados por meio das chaves presentes no cofre de chaves. Portanto, o cofre de Backup requer acesso ao servidor PostgreSQL e ao cofre de chaves. O acesso é concedido à identidade gerenciada do cofre de backup.
Leia sobre as permissões que você deve conceder à identidade gerenciada do cofre de backup no servidor PostgreSQL e no cofre de chaves que armazena as chaves do banco de dados.
Preparar a solicitação
Depois de definir todas as permissões relevantes, execute a configuração do backup em duas etapas:
- Prepare a solicitação usando o cofre, a política e o banco de dados PostgreSQL relevantes no comando
az dataprotection backup-instance initialize
. - Envie a solicitação para fazer backup do banco de dados usando o
az dataprotection backup-instance create
comando.
az dataprotection backup-instance initialize --datasource-id $ossId --datasource-type AzureDatabaseForPostgreSQL -l <vault-location> --policy-id <policy_arm_id> --secret-store-type AzureKeyVault --secret-store-uri $keyURI > OSSBkpInstance.JSON
az dataprotection backup-instance create --resource-group testBkpVaultRG --vault-name TestBkpVault TestBkpvault --backup-instance .\OSSBkpInstance.JSON
Executar um backup sob demanda
Você precisa especificar uma regra de retenção enquanto dispara o backup. Para exibir as regras de retenção em uma política, navegue pelo arquivo JSON da política. No exemplo a seguir, há duas regras de retenção com os nomes Default
e Monthly
. Este artigo usa a Monthly
regra para o backup sob demanda.
az dataprotection backup-policy show -g ossdemorg --vault-name ossdemovault-1 --subscription e3d2d341-4ddb-4c5d-9121-69b7e719485e --name osspol5
{
"id": "/subscriptions/e3d2d341-4ddb-4c5d-9121-69b7e719485e/resourceGroups/ossdemorg/providers/Microsoft.DataProtection/backupVaults/ossdemovault-1/backupPolicies/osspol5",
"name": "osspol5",
"properties": {
"datasourceTypes": [
"Microsoft.DBforPostgreSQL/servers/databases"
],
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Full",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupWeekly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2020-04-04T20:00:00+00:00/P1W",
"R/2020-04-01T20:00:00+00:00/P1W"
],
"timeZone": "UTC"
},
"taggingCriteria": [
{
"criteria": [
{
"absoluteCriteria": [
"FirstOfMonth"
],
"daysOfMonth": null,
"daysOfTheWeek": null,
"monthsOfYear": null,
"objectType": "ScheduleBasedBackupCriteria",
"scheduleTimes": null,
"weeksOfTheMonth": null
}
],
"isDefault": false,
"tagInfo": {
"eTag": null,
"id": "Monthly_",
"tagName": "Monthly"
},
"taggingPriority": 15
},
{
"criteria": null,
"isDefault": true,
"tagInfo": {
"eTag": null,
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": false,
"lifecycles": [
{
"deleteAfter": {
"duration": "P10Y",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Monthly",
"objectType": "AzureRetentionRule"
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P1Y",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
},
"resourceGroup": "ossdemorg",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}
Para disparar um backup sob demanda, use o az dataprotection backup-instance adhoc-backup
comando:
az dataprotection backup-instance adhoc-backup --name "ossrg-empdb11" --rule-name "Monthly" --resource-group testBkpVaultRG --vault-name TestBkpVault
Acompanhar trabalhos
Acompanhe todos os trabalhos usando o az dataprotection job list
comando. Você pode listar todos os trabalhos e buscar um detalhe de trabalho específico.
Você também pode usar Az.ResourceGraph
para rastrear todos os trabalhos em todos os cofres de backup. Use o comando az dataprotection job list-from-resourcegraph
para buscar as tarefas relevantes nos cofres de backup.
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --status Completed
Conteúdo relacionado
- Restaure bancos de dados PostgreSQL usando a CLI do Azure.
- Restaure um banco de dados PostgreSQL usando o portal do Azure, o Azure PowerShell e a API REST.