Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment utiliser Azure PowerShell pour restaurer des bases de données PostgreSQL sur un serveur Azure Database pour PostgreSQL que vous avez sauvegardé via Sauvegarde Azure. Vous pouvez également restaurer une base de données PostgreSQL à l’aide du portail Azure, d’Azure CLI et de l’API REST.
Étant donné qu’une base de données PostgreSQL est une base de données PaaS (Platform as a Service), l’option Original-Location Recovery (OLR) à restaurer en remplaçant la base de données existante (à partir de laquelle les sauvegardes ont été effectuées) n’est pas prise en charge. Vous pouvez effectuer une restauration à partir d’un point de récupération pour créer une base de données dans le même serveur Azure Database pour PostgreSQL ou dans n’importe quel autre serveur PostgreSQL. Cette option est appelée Récupération d’emplacement alternatif (ALR). ALR permet de conserver à la fois la base de données source et la base de données restaurée (nouvelle).
Les exemples de cet article font référence à un coffre de sauvegarde existant nommé TestBkpVault
sous le groupe testBkpVaultRG
de ressources :
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault -ResourceGroupName "testBkpVaultRG"
Effectuer une restauration pour créer une base de données PostgreSQL
Définir des autorisations
Un coffre de sauvegarde utilise une identité managée pour accéder à d’autres ressources Azure. Pour effectuer une restauration à partir d’une sauvegarde, l’identité managée du coffre de sauvegarde nécessite un ensemble d’autorisations sur le serveur Azure Database pour PostgreSQL sur lequel la base de données doit être restaurée.
Pour attribuer les autorisations appropriées à l’identité managée affectée par le système du coffre sur le serveur PostgreSQL cible, consultez l’ensemble d’autorisations nécessaires pour sauvegarder une base de données Azure PostgreSQL.
Pour restaurer le point de récupération sous forme de fichiers dans un compte de stockage, l’identité managée affectée par le système du coffre de sauvegarde a besoin d’accéder au compte de stockage cible.
Extraction du point de récupération approprié
Récupérez toutes les instances à l’aide de la Get-AzDataProtectionBackupInstance
commande et identifiez l’instance appropriée :
$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
Vous pouvez également utiliser Az.Resourcegraph
et la commande Search-AzDataProtectionBackupInstanceInAzGraph
pour effectuer des recherches parmi les instances dans de nombreux coffres et abonnements.
$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured
Pour filtrer les critères de recherche, utilisez les fonctionnalités de recherche du client PowerShell :
Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured | Where-Object { $_.BackupInstanceName -match "empdb11"}
Après avoir identifié l’instance, récupérez le point de récupération approprié :
$rp = Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName
Si vous devez récupérer le point de récupération à partir du niveau archive, ajoutez un filtre client :
Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName | Where-Object {$_.Property.RecoveryPointDataStoresDetail[0].Type -match "Archive" }
Préparer la demande de restauration
Il existe différentes options de restauration pour une base de données PostgreSQL. Vous pouvez restaurer le point de récupération sous la forme d’une autre base de données ou de fichiers. Le point de récupération peut également se trouver sur le niveau Archive.
Restaurer comme base de données
Construisez l’ID Azure Resource Manager de la nouvelle base de données PostgreSQL à créer (avec le serveur PostgreSQL cible auquel les autorisations ont été affectées, comme indiqué précédemment). Incluez le nom de base de données PostgreSQL requis. Par exemple, une base de données PostgreSQL peut être nommée emprestored21
sous un serveur PostgreSQL cible nommé targetossserver
dans le groupe targetrg
de ressources avec un autre abonnement :
$targetOssId = /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21
Utilisez la Initialize-AzDataProtectionRestoreRequest
commande pour préparer la demande de restauration avec tous les détails pertinents :
$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
Pour un point de récupération basé sur une archive, vous devez effectuer les opérations suivantes :
- Réalimentez du magasin de données d’archive vers le magasin de données du coffre.
- Modifier le magasin de données source
- Ajouter d’autres paramètres pour spécifier la priorité de réhydratation
- Spécifiez la durée pendant laquelle le point de récupération réhydraté doit être conservé dans le magasin de données du coffre.
- Effectuer la restauration sous forme de base de données à partir de ce point de récupération
Utilisez la commande suivante pour préparer la demande pour toutes les opérations mentionnées précédemment à la fois :
$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
Restaurer sous forme de fichiers
Récupérez l’URI du conteneur dans le compte de stockage auquel les autorisations ont été affectées, comme indiqué précédemment. L’exemple suivant utilise un conteneur nommé testcontainerrestore
sous un compte de stockage nommé testossstorageaccount
avec un autre abonnement :
$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"
Utilisez la Initialize-AzDataProtectionRestoreRequest
commande pour préparer la demande de restauration avec tous les détails pertinents :
$OssRestoreAsFilesReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore VaultStore -RestoreLocation $TestBkpVault.Location -RestoreType RestoreAsFiles -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetContainerURI $contURI -FileNamePrefix "empdb11_postgresql-westus_1628853549768"
Pour le point de récupération basé sur l’archive, modifiez le magasin de données source. Ajoutez la priorité de réhydratation et la durée de rétention, en jours, du point de récupération réhydraté :
$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
Déclencher la restauration
Utilisez la Start-AzDataProtectionBackupInstanceRestore
commande pour déclencher la restauration avec la demande que vous avez préparée précédemment :
Start-AzDataProtectionBackupInstanceRestore -BackupInstanceName $AllInstances[2].BackupInstanceName -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Parameter $OssRestoreReq
Suivre les travaux
Effectuez le suivi des travaux à l’aide de la Get-AzDataProtectionJob
commande. Vous pouvez répertorier tous les travaux et extraire le détail d’un travail particulier.
Vous pouvez également utiliser Az.ResourceGraph
pour suivre tous les travaux dans l’ensemble des coffres de sauvegarde. Utilisez la commande Search-AzDataProtectionJobInAzGraph
pour obtenir le travail approprié dans tous les coffres de sauvegarde :
$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -Operation OnDemandBackup