Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 testBkpVaultRG
de 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:
- Rehidratación del almacén de datos de archivo al almacén de datos del almacén.
- Modificar el almacén de datos de origen.
- Agregar otros parámetros para especificar la prioridad de rehidratación.
- Especifique la duración para la que se debe conservar el punto de recuperación rehidratado en el almacén de datos.
- 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