Partilhar 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 suportados e as perguntas frequentes sobre o 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 suportadas pelo Backup do Azure, como o Banco de Dados do Azure para servidores PostgreSQL, discos do Azure e blobs do Azure. Os cofres de backup ajudam a organizar os seus dados de backup, ao mesmo tempo que minimizam a sobrecarga de gestão. Os cofres de backup são baseados no modelo do Azure Resource Manager da Azure, que oferece capacidades aprimoradas 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, crie o cofre de backup com a redundância de armazenamento e localização desejadas.

Neste artigo, você cria um cofre de backup chamado TestBkpVault, na westus região, sob o grupo testBkpVaultRGde recursos . 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.

Compreender a política de backup do PostgreSQL

Por outro lado, enquanto o backup em disco oferece vários backups por dia e o backup do blob é um backup contínuo sem necessidade de acionador, o backup do PostgreSQL oferece proteção de arquivamento. Os dados de backup enviados pela primeira vez para o vault 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 para PostgreSQL:

  • Regra de política
    • Regra de backup
      • Parâmetro de backup
        • Tipo de backup (um backup de banco de dados completo neste caso)
        • Armazenamento de dados inicial (onde os backups aterrissam inicialmente)
        • Trigger (como o backup é acionado)
          • Cronograma
          • Critérios de marcação padrão (uma tag 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 eles são acionados (por meio de uma programação), com o que são marcados, onde aterrissam (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 indica disparar um backup completo toda semana. Os backups são transferidos para o cofre, onde são armazenados por três meses.

Se quiser adicionar a camada de arquivo à política, você precisa decidir quando os dados serão movidos do cofre para o arquivo, por quanto tempo os dados permanecerão no arquivo 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 vault 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 arquivamento. Em seguida, você precisa adicionar uma tag que marque os backups agendados como elegíveis para serem arquivados.

O objeto PowerShell resultante é o seguinte:

  • Regra de política
    • Regra de backup
      • Parâmetro de backup
        • Tipo de backup (um backup de banco de dados completo neste caso)
        • Armazenamento de dados inicial (onde os backups aterrissam inicialmente)
        • Trigger (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 de banco de dados PostgreSQL, recupere o modelo de política usando o Get-AzDataProtectionPolicyTemplate comando. Este comando retorna o modelo de política padrão para um tipo de fonte de dados. Utilize 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 aciona 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 para o gatilho é um gatilho semanal agendado (um backup a cada sete dias). Cada backup é retido 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 cronograma

O modelo de política padrão oferece um backup uma vez por semana. Você pode modificar o agendamento para que o backup aconteça vários dias por semana. Para alterar a agenda, 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 do cronograma indica as datas, e os dias da semana correspondentes são considerados como dias úteis. Também precisa especificar que estes horários devem repetir-se todas as semanas. Assim, o intervalo de programação é 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 quiser adicionar proteção de arquivamento, você precisa 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 defina quando os dados são movidos para o armazenamento de dados de arquivamento. Ou seja, os dados de backup são primeiro copiados para o armazenamento de dados de arquivo morto e, em seguida, são excluídos no armazenamento de dados do cofre.

Além disso, a regra deve definir por quanto tempo os dados devem ser mantidos no armazenamento de dados de arquivamento. 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 arquivamento e mantido na camada de arquivamento 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 tag e os critérios relevantes

Depois de criar uma regra de retenção, você precisa criar uma tag correspondente na Trigger propriedade da política de backup. Para criar novos critérios de marcação, use o New-AzDataProtectionPolicyTagCriteriaClientObject comando. Para atualizar a tag existente ou criar uma nova tag, use o comando Edit-AzDataProtectionPolicyTagClientObject .

O exemplo a seguir cria uma nova tag junto com os critérios, 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:

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

Se o agendamento for 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, 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.

Compreender as principais entidades

Banco de dados PostgreSQL para backup

Procure a ID do Gerenciador de Recursos do banco de dados PostgreSQL para backup. Esse ID serve como identificador do banco de dados. O exemplo a seguir usa um banco de dados nomeado empdb11 sob o servidor testposgresqlPostgreSQL , que está presente no grupo ossrg de recursos sob uma assinatura diferente:

$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 de 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. Em seguida, o serviço de Backup do Azure acessa o cofre de chaves, lê as chaves e acessa o banco de dados. Anote 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 através das chaves presentes no cofre de chaves. Assim, 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 Cofre de Chaves do Azure, onde as chaves do banco de dados são armazenadas.

Prepare o pedido

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

  1. Prepare a solicitação usando o vault, a política e o banco de dados PostgreSQL relevantes no Initialize-AzDataProtectionBackupInstance comando.
  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

Procure a instância de backup relevante na qual você precisa acionar 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 acionar 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 acionar 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

Rastreie todos os trabalhos usando o Get-AzDataProtectionJob comando. Pode listar todos os trabalhos e obter detalhes de um 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