Partager via


Sauvegarder des bases de données PostgreSQL à l’aide d’Azure PowerShell

Cet article explique comment sauvegarder Azure Database pour PostgreSQL à l’aide d’Azure PowerShell. Vous pouvez également configurer la sauvegarde à l’aide du portail Azure, d’Azure CLI et de l’API REST pour les bases de données PostgreSQL.

En savoir plus sur les scénarios pris en charge et les questions fréquemment posées pour sauvegarder des bases de données PostgreSQL dans Azure Database pour PostgreSQL.

Créer un coffre de sauvegarde

Un coffre de sauvegarde est une entité de stockage dans Azure. Il stocke les données de sauvegarde pour différentes nouvelles charges de travail qu’Azure Backup prend en charge, telles que les serveurs Azure Database pour PostgreSQL, les disques Azure et les objets blob Azure. Les coffres-forts de sauvegarde aident à organiser vos données de secours, tout en réduisant la charge de gestion. Les coffres Sauvegarde sont basés sur le modèle Azure Resource Manager, qui fournit des fonctionnalités améliorées pour sécuriser les données de sauvegarde.

Avant de créer un coffre Sauvegarde, choisissez la redondance de stockage des données dans le coffre. Ensuite, créez le coffre de sauvegarde en utilisant la redondance de stockage et l'emplacement spécifiés.

Dans cet article, vous allez créer un coffre de sauvegarde nommé TestBkpVault, dans la westus région, sous le groupe testBkpVaultRGde ressources . Utilisez la New-AzDataProtectionBackupVault commande pour créer un coffre de sauvegarde. En savoir plus sur la création d’un coffre de sauvegarde.

$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

Créer une stratégie de sauvegarde

Après avoir créé un coffre, vous pouvez créer une stratégie de sauvegarde pour protéger les bases de données PostgreSQL. Vous pouvez également créer une stratégie de sauvegarde pour les bases de données PostgreSQL à l’aide de l’API REST.

Comprendre la stratégie de sauvegarde PostgreSQL

Alors que la sauvegarde sur disque offre plusieurs sauvegardes par jour et que la sauvegarde blob est une sauvegarde continue sans déclencheur, la sauvegarde PostgreSQL offre une protection d’archive. Les données de sauvegarde qui sont envoyées pour la première fois au coffre peuvent être déplacées vers le niveau archive, en fonction d’une règle définie ou d’un cycle de vie.

Dans ce contexte, la hiérarchie suivante peut vous aider à comprendre l’objet de stratégie de sauvegarde pour PostgreSQL :

  • Règle de stratégie
    • Règle de sauvegarde
      • Paramètre de sauvegarde
        • Type de sauvegarde (sauvegarde complète de la base de données dans ce cas)
        • Magasin de données initial (où les sauvegardes atterrissent initialement)
        • Déclencheur (mode de déclenchement de la sauvegarde)
          • Calendrier
          • Critères d’étiquetage par défaut (tag par défaut qui lie toutes les sauvegardes planifiées à la règle de rétention)
    • Règle de rétention par défaut (règle appliquée à toutes les sauvegardes, par défaut, sur le magasin de données initial)

L’objet de stratégie définit quels types de sauvegardes sont déclenchés, comment ils sont déclenchés (via une planification), ce qu’ils sont marqués avec, où ils atterrissent (magasin de données) et le cycle de vie de leurs données dans un magasin de données.

L’objet PowerShell par défaut pour PostgreSQL indique de déclencher une sauvegarde complète chaque semaine. Les sauvegardes atteignent le coffre-fort, où elles sont stockées pendant trois mois.

Si vous souhaitez ajouter le niveau archive à la stratégie, vous devez décider quand les données seront déplacées du coffre vers l’archive, de la durée pendant laquelle les données resteront dans l’archive et quelles sauvegardes planifiées doivent être étiquetées comme archivage. Vous devez ajouter une règle de rétention définissant le cycle de vie des données de sauvegarde du datastore de coffre au datastore d'archive. La règle de rétention définit également la durée pendant laquelle les données de sauvegarde restent dans le magasin de données d’archivage. Ensuite, vous devez ajouter une balise qui marque les sauvegardes planifiées comme pouvant être archivées.

L’objet PowerShell qui en résulte est le suivant :

  • Règle de stratégie
    • Règle de sauvegarde
      • Paramètre de sauvegarde
        • Type de sauvegarde (sauvegarde complète de la base de données dans ce cas)
        • Magasin de données initial (où les sauvegardes atterrissent initialement)
        • Déclencheur (mode de déclenchement de la sauvegarde)
          • Calendrier
          • Critères d’étiquetage par défaut (étiquette par défaut qui relie toutes les sauvegardes programmées à la règle de rétention)
          • Nouveaux critères d’étiquetage pour la nouvelle règle de rétention portant le même nom
    • Règle de rétention par défaut (règle appliquée à toutes les sauvegardes, par défaut, sur le magasin de données initial)
    • Nouvelle règle de rétention
      • Cycle de vie
        • Magasin de données source
        • Période de suppression dans le système de stockage des données source
        • Copier dans l'entrepôt de données cible

Récupérer le modèle de stratégie

Pour comprendre les composants internes d’une stratégie de sauvegarde pour la sauvegarde de base de données PostgreSQL, récupérez le modèle de stratégie à l’aide de la Get-AzDataProtectionPolicyTemplate commande. Cette commande retourne le modèle de stratégie par défaut pour un type de source de données. Utilisez ce modèle de stratégie pour créer une nouvelle stratégie.

$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

Le modèle de stratégie se compose d’un déclencheur (qui détermine ce qui déclenche la sauvegarde) et d’un cycle de vie (qui décide quand supprimer, copier ou déplacer la sauvegarde). Dans une sauvegarde de base de données PostgreSQL, la valeur par défaut du déclencheur est un déclencheur hebdomadaire planifié (une sauvegarde tous les sept jours). Chaque sauvegarde est conservée pendant trois mois.

 $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 : {}

Modification du modèle de stratégie

Modification de la planification

Le modèle de stratégie par défaut comporte une sauvegarde par semaine. Vous pouvez modifier la planification de la sauvegarde pour qu’elle se produise plusieurs jours par semaine. Pour modifier la planification, utilisez la Edit-AzDataProtectionPolicyTriggerClientObject commande.

L’exemple suivant modifie la sauvegarde hebdomadaire en dimanche, mercredi et vendredi de chaque semaine. Le tableau de dates de planification mentionne les dates et les jours de la semaine pour ces dates sont pris en tant que jours de la semaine. Vous devez également spécifier que ces planifications se répètent chaque semaine. Par conséquent, l’intervalle de planification est 1 et le type d’intervalle est 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   

Ajout d’une nouvelle règle de rétention

Si vous souhaitez ajouter une protection d’archivage, vous devez modifier le modèle de stratégie.

Le modèle par défaut a un cycle de vie pour le magasin de données initial sous la règle de rétention par défaut. Dans ce scénario, la règle indique de supprimer les données de sauvegarde au bout de trois mois. Vous devez ajouter une nouvelle règle de rétention qui définit quand les données sont déplacées vers le magasin de données d’archivage. Autrement dit, les données de sauvegarde sont d’abord copiées dans le magasin de données d’archive, puis supprimées dans le magasin de données du coffre.

En outre, la règle doit définir la durée pendant laquelle conserver les données dans le magasin de données d’archivage. Pour créer de nouveaux cycles de vie, utilisez la New-AzDataProtectionRetentionLifeCycleClientObject commande. Pour associer ces cycles de vie à des règles nouvelles ou existantes, utilisez la Edit-AzDataProtectionPolicyRetentionRuleClientObject commande.

L’exemple suivant crée une règle de rétention nommée Monthly. Dans cette règle, la première sauvegarde réussie de chaque mois est conservée dans le coffre pendant six mois, déplacée vers le niveau archive et conservée dans le niveau archive pendant 24 mois.

$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

Ajout d’une étiquette et des critères pertinents

Après avoir créé une règle de rétention, vous devez créer une balise correspondante dans la Trigger propriété de la stratégie de sauvegarde. Pour créer de nouveaux critères d’étiquetage, utilisez la New-AzDataProtectionPolicyTagCriteriaClientObject commande. Pour mettre à jour la balise existante ou créer une balise, utilisez la commande Edit-AzDataProtectionPolicyTagClientObject .

L’exemple suivant crée une balise avec les critères, qui est la première sauvegarde réussie du mois. L’étiquette a le même nom que la règle de conservation correspondante à appliquer.

Dans cet exemple, les critères d’étiquette sont nommés Monthly:

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

Si la planification est de plusieurs sauvegardes par semaine (tous les dimanches, mercredis et jeudis, comme indiqué dans l’exemple précédent) et que vous souhaitez archiver les sauvegardes dimanche et vendredi, vous pouvez modifier les critères d’étiquetage comme suit :

$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -DaysOfWeek @("Sunday", "Friday")
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria

Création d’une stratégie de sauvegarde PostgreSQL

Après avoir modifié le modèle en fonction des exigences, utilisez la New-AzDataProtectionBackupPolicy commande pour créer une stratégie à l’aide du modèle modifié :

$polOss = New-AzDataProtectionBackupPolicy -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Name "TestOSSPolicy" -Policy $policyDefn

Configurer une sauvegarde

Après avoir créé le coffre et la stratégie, vous devez prendre en compte trois points critiques pour sauvegarder une base de données PostgreSQL dans Azure Database pour PostgreSQL.

Comprendre les entités clés

Base de données PostgreSQL à sauvegarder

Récupérez l’ID Resource Manager de la base de données PostgreSQL à sauvegarder. Cet ID sert d’identificateur de la base de données. L’exemple suivant utilise une base de données nommée empdb11 sous le serveur testposgresqlPostgreSQL, qui est présente dans le groupe ossrg de ressources sous un autre abonnement :

$ossId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/servers/archive-postgresql-ccy/databases/empdb11"

Coffre de clés

Le service Sauvegarde Azure ne stocke pas le nom d’utilisateur ni le mot de passe permettant de se connecter à la base de données PostgreSQL. Au lieu de cela, l’administrateur de sauvegarde place les clés dans le coffre de clés. Le service Sauvegarde Azure accède ensuite au coffre de clés, lit les clés et accède à la base de données. Notez l’identificateur de secret de la clé concernée.

$keyURI = "https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"

Coffre de sauvegarde

Vous devez connecter le coffre de sauvegarde au serveur PostgreSQL, puis accéder à la base de données via les clés présentes dans le coffre de clés. Par conséquent, le coffre de sauvegarde nécessite l’accès au serveur PostgreSQL et au coffre de clés. L'accès est accordé à l'identité gérée du coffre-fort de sauvegarde.

Découvrez les autorisations appropriées que vous devez accorder à l’identité managée du coffre de sauvegarde sur le serveur PostgreSQL et Azure Key Vault, où les clés de la base de données sont stockées.

Préparer la requête

Après avoir défini toutes les autorisations appropriées, effectuez la configuration de la sauvegarde en deux étapes :

  1. Préparez la requête à l’aide du coffre, de la stratégie et de la base de données PostgreSQL appropriés dans la commande Initialize-AzDataProtectionBackupInstance.
  2. Envoyez la demande pour sauvegarder la base de données à l’aide de la New-AzDataProtectionBackupInstance commande.
$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

Exécuter une sauvegarde à la demande

Récupérez l’instance de sauvegarde appropriée sur laquelle vous devez déclencher une sauvegarde à l’aide de la Get-AzDataProtectionBackupInstance commande :

$instance = Get-AzDataProtectionBackupInstance -SubscriptionId "xxxx-xxx-xxx" -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "BackupInstanceName"

Vous pouvez spécifier une règle de rétention lors du déclenchement d’une sauvegarde. Pour afficher les règles de rétention dans une stratégie, parcourez l’objet de stratégie. Dans l’exemple suivant, la règle portant le nom Default s’affiche. Cet article utilise cet exemple de règle pour la sauvegarde à la demande.

$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

Pour déclencher une sauvegarde à la demande, utilisez la Backup-AzDataProtectionBackupInstanceAdhoc commande :

$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $AllInstances[0].Name -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupRuleOptionRuleName "Default"

Suivre les travaux

Effectuez le suivi de tous les 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 Search-AzDataProtectionJobInAzGraph commande pour extraire les travaux appropriés dans n’importe quel coffre de sauvegarde :

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