Compartilhar via


Fazer backup de bancos de dados PostgreSQL usando o Azure PowerShell

Este artigo descreve como fazer backup do Banco de Dados do Azure para PostgreSQL usando o Azure PowerShell. Você também pode configurar o backup usando o portal do Azure, a CLI do Azure e a API REST para bancos de dados PostgreSQL.

Saiba mais sobre os cenários com suporte e perguntas frequentes sobre como fazer backup de bancos de dados PostgreSQL no 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 para várias novas cargas de trabalho compatíveis com o Backup do Azure, como servidores do Banco de Dados do Azure para PostgreSQL, discos do Azure e blobs 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. Em seguida, prossiga para criar o cofre de backup com essa redundância de armazenamento e o local.

Neste artigo, você criará um cofre de backup chamado TestBkpVault, na westus região, no grupo de recursos testBkpVaultRG. Use o New-AzDataProtectionBackupVault comando para criar um cofre de Backup. Saiba mais sobre como criar um cofre de Backup.

$storageSetting = New-AzDataProtectionBackupVaultStorageSettingObject -Type LocallyRedundant/GeoRedundant -DataStoreType VaultStore
New-AzDataProtectionBackupVault -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Location westus -StorageSetting $storageSetting
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault
$TestBKPVault | fl
ETag                :
Id                  : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault
Identity            : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppIdentityDetails
IdentityPrincipalId :
IdentityTenantId    :
IdentityType        :
Location            : westus
Name                : TestBkpVault
ProvisioningState   : Succeeded
StorageSetting      : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.StorageSetting}
SystemData          : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SystemData
Tag                 : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppTrackedResourceTags
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)
    • Regra de retenção padrão (uma regra que é aplicada a todos os backups, por padrão, no armazenamento de dados inicial)

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
    • 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

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 Get-AzDataProtectionPolicyTemplate 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.

$policyDefn = Get-AzDataProtectionPolicyTemplate -DatasourceType AzureDatabaseForPostgreSQL
$policyDefn | fl


DatasourceType : {Microsoft.DBforPostgreSQL/servers/databases}
ObjectType     : BackupPolicy
PolicyRule     : {BackupWeekly, Default}

$policyDefn.PolicyRule | fl


BackupParameter           : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.AzureBackupParams
BackupParameterObjectType : AzureBackupParams
DataStoreObjectType       : DataStoreInfoBase
DataStoreType             : VaultStore
Name                      : BackupWeekly
ObjectType                : AzureBackupRule
Trigger                   : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.ScheduleBasedTriggerCo
                            ntext
TriggerObjectType         : ScheduleBasedTriggerContext

IsDefault  : True
Lifecycle  : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.SourceLifeCycle}
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.

 $policyDefn.PolicyRule[0].Trigger | fl


ObjectType                    : ScheduleBasedTriggerContext
ScheduleRepeatingTimeInterval : {R/2021-08-22T02:00:00+00:00/P1W}
ScheduleTimeZone              : UTC
TaggingCriterion              : {Default}
$policyDefn.PolicyRule[1].Lifecycle | fl


DeleteAfterDuration        : P3M
DeleteAfterObjectType      : AbsoluteDeleteOption
SourceDataStoreObjectType  : DataStoreInfoBase
SourceDataStoreType        : VaultStore
TargetDataStoreCopySetting : {}

Modificar o modelo de política

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 alterar o agendamento, use o Edit-AzDataProtectionPolicyTriggerClientObject 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.

$schDates = @(
  (
    (Get-Date -Year 2021 -Month 08 -Day 15 -Hour 22 -Minute 0 -Second 0)
  ), 
  (
    (Get-Date -Year 2021 -Month 08 -Day 18 -Hour 22 -Minute 0 -Second 0)
  ),
  (
    (Get-Date -Year 2021 -Month 08 -Day 20 -Hour 22 -Minute 0 -Second 0)
  )
)
$trigger = New-AzDataProtectionPolicyTriggerScheduleClientObject -ScheduleDays $schDates -IntervalType Weekly -IntervalCount 1 
Edit-AzDataProtectionPolicyTriggerClientObject -Schedule $trigger -Policy $policyDefn   

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 New-AzDataProtectionRetentionLifeCycleClientObject comando. Para associar esses ciclos de vida a regras novas ou existentes, use o Edit-AzDataProtectionPolicyRetentionRuleClientObject 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.

$VaultToArchiveLifeCycle = New-AzDataProtectionRetentionLifeCycleClientObject -SourceDataStore VaultStore -SourceRetentionDurationType Months -SourceRetentionDurationCount 6 -TargetDataStore ArchiveStore -CopyOption CopyOnExpiryOption

$OnArchiveLifeCycle = New-AzDataProtectionRetentionLifeCycleClientObject -SourceDataStore ArchiveStore -SourceRetentionDurationType Months -SourceRetentionDurationCount 24

Edit-AzDataProtectionPolicyRetentionRuleClientObject -Policy $policyDefn -Name Monthly -LifeCycles $VaultToArchiveLifeCycle, $OnArchiveLifeCycleLifeCycle -IsDefault $false

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 New-AzDataProtectionPolicyTagCriteriaClientObject comando. Para atualizar a marca existente ou criar uma nova marca, use o comando Edit-AzDataProtectionPolicyTagClientObject .

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 que deve ser aplicada.

Neste exemplo, os critérios de tag são nomeados Monthly:

$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -AbsoluteCriteria FirstOfMonth
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria

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 da seguinte maneira:

$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -DaysOfWeek @("Sunday", "Friday")
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria

Criar uma nova política de backup do PostgreSQL

Depois de modificar o modelo de acordo com os requisitos, use o New-AzDataProtectionBackupPolicy comando para criar uma política usando o modelo modificado:

$polOss = New-AzDataProtectionBackupPolicy -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Name "TestOSSPolicy" -Policy $policyDefn

Configurar cópia de segurança

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 testposgresqlPostgreSQL, que está presente no grupo ossrg de recursos em uma assinatura diferente:

$ossId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/servers/archive-postgresql-ccy/databases/empdb11"

Cofre de chaves

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. Observe o identificador secreto da chave relevante.

$keyURI = "https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"

Cofre de backup

Você precisa conectar o cofre de Backup 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 apropriadas que você deve conceder à identidade gerenciada do cofre de backup no servidor PostgreSQL e no Azure Key Vault, em que as chaves do banco de dados são armazenadas.

Preparar a solicitação

Depois de definir todas as permissões relevantes, execute a configuração do backup em duas etapas:

  1. Prepare a solicitação usando o cofre, a política e o banco de dados PostgreSQL relevantes no comando Initialize-AzDataProtectionBackupInstance.
  2. Envie a solicitação para fazer backup do banco de dados usando o New-AzDataProtectionBackupInstance comando.
$instance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureDatabaseForPostgreSQL -DatasourceLocation $TestBkpvault.Location -PolicyId $polOss[0].Id -DatasourceId $ossId -SecretStoreURI $keyURI -SecretStoreType AzureKeyVault
ConvertTo-Json -InputObject $instance -Depth 4 
New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $instance

Name                        Type                                         BackupInstanceName
----                        ----                                          ------------------
ossrg-empdb11       Microsoft.DataProtection/backupVaults/backupInstances ossrg-empdb11

Executar um backup sob demanda

Busque a instância de backup relevante na qual você precisa disparar um backup usando o Get-AzDataProtectionBackupInstance comando:

$instance = Get-AzDataProtectionBackupInstance -SubscriptionId "xxxx-xxx-xxx" -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "BackupInstanceName"

Você pode especificar uma regra de retenção ao disparar um backup. Para exibir as regras de retenção em uma política, navegue pelo objeto de política. No exemplo a seguir, a regra com o nome Default é exibida. Este artigo usa essa regra de exemplo para o backup sob demanda.

$ossPol.PolicyRule | fl


BackupParameter           : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.AzureBackupParams
BackupParameterObjectType : AzureBackupParams
DataStoreObjectType       : DataStoreInfoBase
DataStoreType             : OperationalStore
Name                      : BackupHourly
ObjectType                : AzureBackupRule
Trigger                   : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.ScheduleBasedTriggerContext
TriggerObjectType         : ScheduleBasedTriggerContext

IsDefault  : True
Lifecycle  : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SourceLifeCycle}
Name       : Default
ObjectType : AzureRetentionRule

Para disparar um backup sob demanda, use o Backup-AzDataProtectionBackupInstanceAdhoc comando:

$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $AllInstances[0].Name -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupRuleOptionRuleName "Default"

Acompanhar trabalhos

Acompanhe todos os trabalhos usando o Get-AzDataProtectionJob 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 Search-AzDataProtectionJobInAzGraph comando para buscar os trabalhos relevantes em qualquer cofre de Backup:

  $job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureDisk -Operation OnDemandBackup