Partager via


Sauvegarder Azure Database pour PostgreSQL – Serveur flexible en utilisant Azure CLI (préversion)

Cet article explique comment sauvegarder une base de données Azure PostgreSQL – Serveur flexible en utilisant Azure CLI.

Dans cet article, vous apprendrez comment :

  • Créer un coffre de sauvegarde
  • Créer une stratégie de sauvegarde
  • Configurer une sauvegarde d’une instance Azure Database pour PostgreSQL – Serveur flexible
  • Exécuter un travail de sauvegarde à la demande

Pour plus d’informations sur les scénarios pris en charge et les limitations des bases de données Azure PostgreSQL, consultez la matrice de prise en charge.

Créer un coffre de sauvegarde

Le coffre de sauvegarde est une entité de stockage dans Azure. Il stocke les données de sauvegarde pour les nouvelles charges de travail prises en charge par Sauvegarde Azure. Par exemple, des serveurs Azure Database pour PostgreSQL – Serveur flexible, des objets blobs dans un compte de stockage et des disques Azure. Il vous aide à organiser vos données de sauvegarde 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, procédez à la création du coffre Sauvegarde avec cette redondance de stockage et l’emplacement.

Dans cet article, nous créons un coffre Sauvegarde TestBkpVault dans la région westus, sous le groupe de ressources testBkpVaultRG. Utilisez la commande az data protection vault create pour créer un coffre Sauvegarde. Pour plus d’informations, consultez Création d’un coffre Sauvegarde.

az dataprotection backup-vault create -g testBkpVaultRG --vault-name TestBkpVault -l westus --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"

{
  "eTag": null,
  "id": "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault",
  "identity": {
    "principalId": "00001111-aaaa-2222-bbbb-3333cccc4444",
    "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "type": "SystemAssigned"
  },
  "location": "westus",
  "name": "TestBkpVault",
  "properties": {
    "provisioningState": "Succeeded",
    "storageSettings": [
      {
        "datastoreType": "VaultStore",
        "type": "LocallyRedundant"
      }
    ]
  },
  "resourceGroup": "testBkpVaultRG",
  "systemData": null,
  "tags": null,
  "type": "Microsoft.DataProtection/backupVaults"
}

Une fois le coffre créé, nous créons une stratégie de sauvegarde pour protéger Azure PostgreSQL – Serveur flexible.

Créer une stratégie de sauvegarde

Présentation de la stratégie de sauvegarde PostgreSQL

Examinons l’objet de stratégie de sauvegarde pour PostgreSQL – Serveur flexible.

  • PolicyRule
    • BackupRule
      • BackupParameter
        • BackupType (dans le cas présent, une sauvegarde complète du serveur)
        • Magasin de données initial (où les sauvegardes sont placées)
        • Déclencheur (mode de déclenchement de la sauvegarde)
          • Suivant une planification
          • Critères d’étiquetage par défaut (« étiquette » par défaut pour toutes les sauvegardes planifiées. Cette étiquette lie les sauvegardes à la règle de rétention)
    • Règle de rétention par défaut (une règle appliquée par défaut à toutes les sauvegardes sur le magasin de données initial)

Cet objet définit le type des sauvegardes déclenchées, leur mode de déclenchement (via une planification), leur étiquetage, leur destination (un magasin de données) et le cycle de vie des données des sauvegardes dans un magasin de données. L’objet par défaut pour PostgreSQL indique de déclencher une sauvegarde complète chaque semaine et de la placer dans le coffre, où elles sont stockées pendant trois mois.

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

Pour comprendre les composants internes d’une stratégie de sauvegarde pour la sauvegarde d’une base de données Azure PostgreSQL, récupérez le modèle de stratégie en utilisant la commande az data protection backup-policy get-default-policy-template. Cette commande retourne un modèle de stratégie par défaut pour un type de source de données donné. Utilisez ce modèle de stratégie pour créer une nouvelle stratégie.

az dataprotection backup-policy get-default-policy-template --datasource-type AzureDatabaseForPostgreSQLFlexibleServer
{
  "datasourceTypes": [
    "Microsoft.DBforPostgreSQL/flexibleServers"
  ],
  "name": "OssPolicy1",
  "objectType": "BackupPolicy",
  "policyRules": [
    {
      "backupParameters": {
        "backupType": "Full",
        "objectType": "AzureBackupParams"
      },
      "dataStore": {
        "dataStoreType": "VaultStore",
        "objectType": "DataStoreInfoBase"
      },
      "name": "BackupWeekly",
      "objectType": "AzureBackupRule",
      "trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2021-08-15T06:30:00+00:00/P1W"
          ],
          "timeZone": "UTC"
        },
        "taggingCriteria": [
          {
            "isDefault": true,
            "tagInfo": {
              "id": "Default_",
              "tagName": "Default"
            },
            "taggingPriority": 99
          }
        ]
      }
    },
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P3M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": []
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    }
  ]
}

Le modèle de stratégie est constitué d’un déclencheur (qui détermine le déclenchement de la sauvegarde) et d’un cycle de vie (qui décide quand supprimer/copier/déplacer la sauvegarde). Dans la sauvegarde Azure PostgreSQL – Serveur flexible, la valeur par défaut du déclencheur est un déclencheur hebdomadaire planifié (une sauvegarde tous les 7 jours) et une conservation de chaque sauvegarde pendant 3 mois.

Déclencheur planifié :

"trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2021-08-15T06:30:00+00:00/P1W"
          ],
          "timeZone": "UTC"
        }

Cycle de vie par défaut de la règle de rétention :

 {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P3M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": []
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    }

Modification du modèle de stratégie

Important

Dans Azure PowerShell, les objets peuvent être utilisés comme emplacements intermédiaires pour effectuer toutes les modifications. Dans Azure CLI, nous devons utiliser des fichiers, car il n’existe aucune notion d’objets. Chaque opération de modification doit être redirigée vers un nouveau fichier, où le contenu est lu à partir du fichier d’entrée et redirigé vers le fichier de sortie. Vous pouvez ensuite renommer le fichier selon vos besoins lors de son utilisation dans un script.

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 commande az data protection backup-policy trigger set.

Dans l’exemple suivant, la sauvegarde hebdomadaire est modifiée de façon à se produire le dimanche, le mercredi et le vendredi toutes les semaines. Le tableau des dates de planification mentionne les dates. Les jours de la semaine de ces dates sont pris comme 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.

az dataprotection backup-policy trigger create-schedule --interval-type Weekly --interval-count 1 --schedule-days 2021-08-15T22:00:00 2021-08-18T22:00:00 2021-08-20T22:00:00
[
  "R/2021-08-15T22:00:00+00:00/P1W",
  "R/2021-08-18T22:00:00+00:00/P1W",
  "R/2021-08-20T22:00:00+00:00/P1W"
]

az dataprotection backup-policy trigger set --policy .\OSSPolicy.json  --schedule R/2021-08-15T22:00:00+00:00/P1W R/2021-08-18T22:00:00+00:00/P1W R/2021-08-20T22:00:00+00:00/P1W > EditedOSSPolicy.json

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

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. Utilisez la commande az data protection backup-policy retention-rule create-lifecycle pour créer de nouveaux cycles de vie, et utilisez la commande az data protection backup-policy retention-rule set pour les associer aux nouvelles règles ou aux règles existantes.

L’exemple suivant crée une règle de rétention nommée Monthly, où la première sauvegarde réussie de chaque mois doit être conservée dans le coffre pendant 6 mois.

az dataprotection backup-policy retention-rule create-lifecycle --retention-duration-count 6 --retention-duration-type Months --source-datastore VaultStore > VaultLifeCycle.JSON

az dataprotection backup-policy retention-rule set --lifecycles .\VaultLifeCycle.JSON --name Monthly --policy .\EditedOSSPolicy.json > AddedRetentionRulePolicy.JSON

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

Une fois qu’une règle de rétention est a été créée, vous devez créer une étiquette correspondante dans la propriété Déclencheur de la stratégie de sauvegarde. Utilisez la commande az data protection backup-policy tag create-absolute-criteria pour créer un critère d’étiquetage, et utilisez la commande az data protection backup-policy tag set pour mettre à jour l’étiquette existante ou en créer une nouvelle.

L’exemple suivant crée une étiquette et les critères pour 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 doivent être nommés Monthly.

az dataprotection backup-policy tag create-absolute-criteria --absolute-criteria FirstOfMonth > tagCriteria.JSON
az dataprotection backup-policy tag set --criteria .\tagCriteria.JSON --name Monthly --policy .\AddedRetentionRulePolicy.JSON > AddedRetentionRuleAndTag.JSON

Si la planification actuelle se compose de plusieurs sauvegardes par semaine (tous les dimanches, mercredis et jeudis comme dans spécifié dans cet exemple) et que vous voulez archiver les sauvegardes du dimanche et du vendredi, vous pouvez modifier les critères d’étiquetage comme suit, en utilisant la commande az data protection backup-policy tag create-generic-criteria.

az dataprotection backup-policy tag create-generic-criteria --days-of-week Sunday Friday > tagCriteria.JSON
az dataprotection backup-policy tag set --criteria .\tagCriteria.JSON --name Monthly --policy .\AddedRetentionRulePolicy.JSON > AddedRetentionRuleAndTag.JSON

Créer une stratégie de sauvegarde de PostgreSQL – Serveur flexible

Une fois le modèle modifié conformément aux exigences, utilisez la commande az data protection backup-policy create pour créer une stratégie en utilisant le modèle modifié.

az dataprotection backup-policy create --backup-policy-name FinalOSSPolicy --policy AddedRetentionRuleAndTag.JSON --resource-group testBkpVaultRG --vault-name TestBkpVault

Configurer une sauvegarde

Une fois le coffre et la stratégie créés, il existe trois points critiques à prendre en compte pour protéger une base de données Azure PostgreSQL.

Entités clés impliquées

Base de données PostgreSQL à protéger

Récupérez l’ID Azure Resource Manager de PostgreSQL – Serveur flexible à protéger. Cet ID sert d’identificateur du serveur. Nous utilisons un exemple de serveur PostgreSQL testpgflex, qui se trouve dans le groupe de ressources ossrg sous un autre abonnement.

L’exemple suivant utilise bash.

ossId="/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/flexibleServers/testpgflex"

Archivage de sauvegarde

Le coffre de sauvegarde doit se connecter à l’instance PostgreSQL – Serveur flexible : il a donc besoin d’accéder à ce serveur. L’accès est accordé à l’identité système managée (MSI) du coffre de sauvegarde.

Consultez les autorisations que vous devez accorder à l’identité système managée (MSI) du coffre de sauvegarde sur l’instance PostgreSQL – Serveur flexible.

Préparer la requête

Une fois que toutes les autorisations appropriées sont définies, la configuration de la sauvegarde est effectuée en deux étapes.

  1. Nous préparons la requête appropriée en utilisant le coffre, la stratégie et la base de données PostgreSQL appropriés avec la commande az data protection backup-instance initialize.
  2. Nous soumettons la requête pour protéger le serveur en utilisant la commande az data protection backup-instance create.
az dataprotection backup-instance initialize --datasource-id $ossId --datasource-type AzureDatabaseForPostgreSQLFlexibleServer -l <vault-location> --policy-id <policy_arm_id>   > OSSBkpInstance.JSON

az dataprotection backup-instance create --resource-group testBkpVaultRG --vault-name TestBkpVault TestBkpvault --backup-instance .\OSSBkpInstance.JSON

Exécuter une sauvegarde à la demande

Vous devez spécifier une règle de rétention lorsque vous déclenchez une sauvegarde. Pour afficher les règles de rétention dans la stratégie, accédez au fichier JSON de stratégie des règles de rétention. Dans l’exemple suivant, il existe deux règles de rétention nommées Default et Monthly. Nous utilisons la règle Monthly pour la sauvegarde à la demande.

az dataprotection backup-policy show  -g ossdemorg --vault-name ossdemovault-1 --subscription eaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e --name osspol5
{
  "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ossdemorg/providers/Microsoft.DataProtection/backupVaults/ossdemovault-1/backupPolicies/osspol5",
  "name": "osspol5",
  "properties": {
    "datasourceTypes": [
      "Microsoft.DBforPostgreSQL/flexibleServers"
    ],
    "objectType": "BackupPolicy",
    "policyRules": [
      {
        "backupParameters": {
          "backupType": "Full",
          "objectType": "AzureBackupParams"
        },
        "dataStore": {
          "dataStoreType": "VaultStore",
          "objectType": "DataStoreInfoBase"
        },
        "name": "BackupWeekly",
        "objectType": "AzureBackupRule",
        "trigger": {
          "objectType": "ScheduleBasedTriggerContext",
          "schedule": {
            "repeatingTimeIntervals": [
              "R/2020-04-04T20:00:00+00:00/P1W",
              "R/2020-04-01T20:00:00+00:00/P1W"
            ],
            "timeZone": "UTC"
          },
          "taggingCriteria": [
            {
              "criteria": [
                {
                  "absoluteCriteria": [
                    "FirstOfMonth"
                  ],
                  "daysOfMonth": null,
                  "daysOfTheWeek": null,
                  "monthsOfYear": null,
                  "objectType": "ScheduleBasedBackupCriteria",
                  "scheduleTimes": null,
                  "weeksOfTheMonth": null
                }
              ],
              "isDefault": false,
              "tagInfo": {
                "eTag": null,
                "id": "Monthly_",
                "tagName": "Monthly"
              },
              "taggingPriority": 15
            },
            {
              "criteria": null,
              "isDefault": true,
              "tagInfo": {
                "eTag": null,
                "id": "Default_",
                "tagName": "Default"
              },
              "taggingPriority": 99
            }
          ]
        }
      },
      {
        "isDefault": false,
        "lifecycles": [
          {
            "deleteAfter": {
              "duration": "P10Y",
              "objectType": "AbsoluteDeleteOption"
            },
            "sourceDataStore": {
              "dataStoreType": "VaultStore",
              "objectType": "DataStoreInfoBase"
            },
            "targetDataStoreCopySettings": []
          }
        ],
        "name": "Monthly",
        "objectType": "AzureRetentionRule"
      },
      {
        "isDefault": true,
        "lifecycles": [
          {
            "deleteAfter": {
              "duration": "P1Y",
              "objectType": "AbsoluteDeleteOption"
            },
            "sourceDataStore": {
              "dataStoreType": "VaultStore",
              "objectType": "DataStoreInfoBase"
            },
            "targetDataStoreCopySettings": []
          }
        ],
        "name": "Default",
        "objectType": "AzureRetentionRule"
      }
    ]
  },
  "resourceGroup": "ossdemorg",
  "systemData": null,
  "type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}

Pour déclencher une sauvegarde à la demande, utilisez la commande az data protection backup-instance adhoc-backup.

az dataprotection backup-instance adhoc-backup --name "ossrg-testpgflex" --rule-name "Monthly" --resource-group testBkpVaultRG --vault-name TestBkpVault

Suivre les travaux

Effectuez le suivi de tous les travaux en utilisant la commande az data protection job list. 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 az data protection job list-from-resourcegraph pour récupérer les travaux pertinents qui se trouvent dans les coffres de sauvegarde.

az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQLFlexibleServer --status Completed

Étapes suivantes