Compartir a través de


Restauración de bases de datos PostgreSQL mediante Azure PowerShell

En este artículo se describe cómo usar Azure PowerShell para restaurar bases de datos PostgreSQL en un servidor de Azure Database for PostgreSQL que has copiado a través de Azure Backup. También puede restaurar una base de datos postgreSQL mediante Azure Portal, la CLI de Azure y la API REST.

Dado que una base de datos PostgreSQL es una base de datos de plataforma como servicio (PaaS), no se admite la opción de recuperación de Original-Location (OLR) para restaurar reemplazando la base de datos existente (desde donde se realizaron las copias de seguridad). Puede restaurar desde un punto de recuperación para crear una nueva base de datos en el mismo servidor de Azure Database for PostgreSQL o en cualquier otro servidor de PostgreSQL. Esta opción se denomina Recuperación alternativa de ubicación (ALR). ALR ayuda a mantener la base de datos de origen y la base de datos restaurada (nueva).

Los ejemplos de este artículo hacen referencia a un almacén de Backup existente denominado TestBkpVault en el grupo testBkpVaultRGde recursos :

$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault -ResourceGroupName "testBkpVaultRG"

Restaurar para crear una nueva base de datos PostgreSQL

Configuración de permisos

Un almacén de Backup usa una identidad administrada para acceder a otros recursos de Azure. Para restaurar desde una copia de seguridad, la identidad administrada del almacén de Backup requiere un conjunto de permisos en el servidor de Azure Database for PostgreSQL al que se debe restaurar la base de datos.

Para asignar los permisos pertinentes para la identidad administrada asignada por el sistema de un almacén en el servidor PostgreSQL de destino, consulte el Conjunto de permisos necesarios para realizar una copia de seguridad de una base de datos PostgreSQL.

Para restaurar el punto de recuperación como archivos en una cuenta de almacenamiento, la identidad administrada asignada por el sistema del almacén de Backup necesita acceso a la cuenta de almacenamiento de destino.

Captura del punto de recuperación pertinente

Capture todas las instancias mediante el Get-AzDataProtectionBackupInstance comando e identifique la instancia pertinente:

$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name

También puede usar Az.Resourcegraph y el comando Search-AzDataProtectionBackupInstanceInAzGraph para buscar puntos de recuperación en instancias de muchos almacenes y suscripciones:

$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured

Para filtrar los criterios de búsqueda, use las funcionalidades de búsqueda del cliente de PowerShell:

Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured | Where-Object { $_.BackupInstanceName -match "empdb11"}

Después de identificar la instancia, capture el punto de recuperación correspondiente:

$rp = Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName

Si necesita obtener el punto de recuperación del nivel de archivo, añada un filtro de cliente:

Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName | Where-Object {$_.Property.RecoveryPointDataStoresDetail[0].Type -match "Archive" }

Preparación de la solicitud de restauración

Hay varias opciones de restauración para una base de datos de PostgreSQL. Puede restaurar el punto de recuperación como otra base de datos o restaurar como archivos. El punto de recuperación también puede estar en el nivel de archivo.

Restaurar como una base de datos

Construya el identificador de Azure Resource Manager de la nueva base de datos postgreSQL que se va a crear (con el servidor postgreSQL de destino al que se asignaron permisos, como se ha detallado anteriormente). Incluya el nombre de la base de datos postgreSQL necesaria. Por ejemplo, una base de datos postgreSQL se puede denominar emprestored21 en un servidor de PostgreSQL de destino denominado targetossserver en el grupo targetrg de recursos con una suscripción diferente:

$targetOssId = /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21

Use el Initialize-AzDataProtectionRestoreRequest comando para preparar la solicitud de restauración con todos los detalles pertinentes:

$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 un punto de recuperación basado en archivo, debe:

  1. Rehidratación del almacén de datos de archivo al almacén de datos del almacén.
  2. Modificar el almacén de datos de origen.
  3. Agregar otros parámetros para especificar la prioridad de rehidratación.
  4. Especifique la duración para la que se debe conservar el punto de recuperación rehidratado en el almacén de datos.
  5. Restaurar como base de datos desde este punto de recuperación.

Use el siguiente comando para preparar la solicitud de todas las operaciones mencionadas anteriormente a la 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 archivos

Obtén el URI del contenedor dentro de la cuenta de almacenamiento a la que se asignaron permisos, como se detalló anteriormente. En el ejemplo siguiente se usa un contenedor denominado testcontainerrestore en una cuenta de almacenamiento denominada testossstorageaccount con una suscripción diferente:

$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"

Use el Initialize-AzDataProtectionRestoreRequest comando para preparar la solicitud de restauración con todos los detalles pertinentes:

$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 el punto de recuperación basado en el archivo, modifique el almacén de datos de origen. Agregue la prioridad de rehidratación y la duración de retención, en días, del punto de recuperación rehidratado:

$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

Desencadenamiento de la restauración

Use el Start-AzDataProtectionBackupInstanceRestore comando para desencadenar la restauración con la solicitud que preparó anteriormente:

Start-AzDataProtectionBackupInstanceRestore -BackupInstanceName $AllInstances[2].BackupInstanceName -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Parameter $OssRestoreReq

Seguimiento de trabajos

Realice un seguimiento de los trabajos mediante el Get-AzDataProtectionJob comando . Puede enumerar todos los trabajos y capturar un detalle de trabajo determinado.

También puede usar Az.ResourceGraph para realizar el seguimiento de los trabajos en todos los almacenes de copias de seguridad. Use el comando Search-AzDataProtectionJobInAzGraph para obtener el trabajo pertinente que se encuentra en todos los almacenes de Backup:

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