Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo descreve como usar o Azure PowerShell para restaurar bancos de dados PostgreSQL para um banco de dados do Azure para servidor PostgreSQL do qual você fez backup por meio do Backup do Azure. Você também pode restaurar um banco de dados PostgreSQL usando o portal do Azure, a CLI do Azure e a API REST.
Como um banco de dados PostgreSQL é um banco de dados de plataforma como serviço (PaaS), a opção OLR (Original-Location Recovery) para restaurar substituindo o banco de dados existente (de onde os backups foram feitos) não é suportada. Você pode restaurar a partir de um ponto de recuperação para criar um novo banco de dados no mesmo Banco de Dados do Azure para o servidor PostgreSQL ou em qualquer outro servidor PostgreSQL. Essa opção é chamada de Alternate-Location Recovery (ALR). ALR ajuda a manter o banco de dados de origem e o banco de dados restaurado (novo).
Os exemplos neste artigo referem-se a um cofre de backup existente nomeado TestBkpVault sob o grupo testBkpVaultRGde recursos :
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault -ResourceGroupName "testBkpVaultRG"
Restaurar para criar um novo banco de dados PostgreSQL
Configurar permissões
Um cofre de backup usa uma identidade gerenciada para acessar outros recursos do Azure. Para restaurar a partir de um backup, a identidade gerenciada do cofre de Backup requer um conjunto de permissões no Banco de Dados do Azure para o servidor PostgreSQL para o qual o banco de dados deve ser restaurado.
Para atribuir as permissões relevantes para a identidade gerida atribuída pelo sistema de um cofre no servidor PostgreSQL de destino, consulte o conjunto de permissões necessárias para fazer backup de um banco de dados PostgreSQL.
Para restaurar o ponto de recuperação como arquivos para uma conta de armazenamento, a identidade gerenciada atribuída ao sistema do cofre de backup precisa de acesso na conta de armazenamento de destino.
Buscar o ponto de recuperação relevante
Buscar todas as instâncias usando o Get-AzDataProtectionBackupInstance comando e identificar a instância relevante:
$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
Você também pode usar Az.Resourcegraph e o comando Search-AzDataProtectionBackupInstanceInAzGraph para pesquisar pontos de recuperação em instâncias em muitos cofres e assinaturas:
$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured
Para filtrar os critérios de pesquisa, use os recursos de pesquisa do cliente PowerShell:
Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured | Where-Object { $_.BackupInstanceName -match "empdb11"}
Depois de identificar a instância, busque o ponto de recuperação relevante:
$rp = Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName
Se você precisar buscar o ponto de recuperação na camada de arquivamento, adicione um filtro de cliente:
Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName | Where-Object {$_.Property.RecoveryPointDataStoresDetail[0].Type -match "Archive" }
Preparar a solicitação de restauração
Existem várias opções de restauração para um banco de dados PostgreSQL. Você pode restaurar o ponto de recuperação como outro banco de dados ou restaurar como arquivos. Também é possível que o ponto de recuperação esteja na camada de arquivamento.
Restaurar como um banco de dados
Construa a ID do Azure Resource Manager do novo banco de dados PostgreSQL a ser criado (com o servidor PostgreSQL de destino ao qual as permissões foram atribuídas, conforme detalhado anteriormente). Inclua o nome do banco de dados PostgreSQL necessário. Por exemplo, um banco de dados PostgreSQL pode ser nomeado emprestored21 em um servidor PostgreSQL de destino nomeado targetossserver no grupo targetrg de recursos com uma assinatura diferente:
$targetOssId = /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21
Use o Initialize-AzDataProtectionRestoreRequest comando para preparar a solicitação de restauração com todos os detalhes relevantes:
$OssRestoreReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore VaultStore -RestoreLocation $TestBkpVault.Location -RestoreType AlternateLocation -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetResourceId $targetOssId -SecretStoreURI "https://restoreoss-test.vault.azure.net/secrets/dbauth3" -SecretStoreType AzureKeyVault
Para um ponto de recuperação baseado em arquivamento, você precisa:
- Reidratar do armazenamento de arquivo para o armazenamento de cofre.
- Modifique o armazenamento de dados de origem.
- Adicione outros parâmetros para especificar a prioridade de reidratação.
- Especifique a duração pela qual o ponto de recuperação reidratado deve ser mantido no armazenamento de dados do vault.
- Restaure como um banco de dados a partir deste ponto de recuperação.
Use o seguinte comando para preparar a solicitação para todas as operações mencionadas anteriormente de uma só vez:
$OssRestoreFromArchiveReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore ArchiveStore -RestoreLocation $TestBkpVault.Location -RestoreType AlternateLocation -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetResourceId $targetOssId -SecretStoreURI "https://restoreoss-test.vault.azure.net/secrets/dbauth3" -SecretStoreType AzureKeyVault -RehydrationDuration 12 -RehydrationPriority Standard
Restaurar como ficheiros
Buscar o URI do contêiner na conta de armazenamento à qual as permissões foram atribuídas, conforme detalhado anteriormente. O exemplo a seguir usa um contêiner nomeado testcontainerrestore sob uma conta de armazenamento nomeada testossstorageaccount com uma assinatura diferente:
$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"
Use o Initialize-AzDataProtectionRestoreRequest comando para preparar a solicitação de restauração com todos os detalhes relevantes:
$OssRestoreAsFilesReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore VaultStore -RestoreLocation $TestBkpVault.Location -RestoreType RestoreAsFiles -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetContainerURI $contURI -FileNamePrefix "empdb11_postgresql-westus_1628853549768"
Para o ponto de recuperação baseado em arquivamento, modifique o armazenamento de dados de origem. Adicione a prioridade de reidratação e a duração da retenção, em dias, do ponto de recuperação reidratado:
$OssRestoreAsFilesFromArchiveReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore ArchiveStore -RestoreLocation $TestBkpVault.Location -RestoreType RestoreAsFiles -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetContainerURI $contURI -FileNamePrefix "empdb11_postgresql-westus_1628853549768" -RehydrationDuration "14" -RehydrationPriority Standard
Acionar a restauração
Use o Start-AzDataProtectionBackupInstanceRestore comando para acionar a restauração com a solicitação que você preparou anteriormente:
Start-AzDataProtectionBackupInstanceRestore -BackupInstanceName $AllInstances[2].BackupInstanceName -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Parameter $OssRestoreReq
Acompanhar tarefas
Rastreie trabalhos usando o Get-AzDataProtectionJob comando. Você pode listar todos os trabalhos e buscar um detalhe específico do trabalho.
Você também pode usar Az.ResourceGraph para monitorizar tarefas em todos os cofres de backup. Utilize o comando Search-AzDataProtectionJobInAzGraph para obter o trabalho relevante que esteja em todos os cofres de backup.
$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -Operation OnDemandBackup