Delen via


Een back-up maken van PostgreSQL-databases met behulp van de Azure CLI

In dit artikel wordt beschreven hoe u een back-up maakt van PostgreSQL-databases in Azure Virtual Machines met behulp van de Azure CLI. U kunt back-ups ook configureren met behulp van Azure Portal, Azure PowerShell en REST API voor PostgreSQL-databases.

Meer informatie over de ondersteunde scenario's en veelgestelde vragen over het maken van back-ups van Azure Database for PostgreSQL.

Een Backup-kluis maken

Een Backup-kluis is een opslagentiteit in Azure. De back-upgegevens worden opgeslagen voor nieuwe workloads die door Azure Backup worden ondersteund, zoals Azure Database for PostgreSQL-servers, blobs in een opslagaccount en Azure-schijven. Back-upkluizen helpen bij het organiseren van uw back-upgegevens, terwijl de beheeroverhead wordt geminimaliseerd. Back-upkluizen zijn gebaseerd op het Azure Resource Manager-model van Azure, dat verbeterde mogelijkheden biedt om back-upgegevens te beveiligen.

Voordat u een Backup-kluis maakt, kiest u de opslagredundantie van de gegevens in de kluis. Ga vervolgens verder met het maken van de Backup-kluis met die opslagredundantie en de locatie.

In dit artikel maakt u een Backup-kluis met de naam TestBkpVault, in de westus regio, onder de resourcegroep testBkpVaultRG. Gebruik de az dataprotection vault create opdracht om een Backup-kluis te maken. Meer informatie over het maken van een Backup-kluis.

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/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault",
  "identity": {
    "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
    "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "type": "SystemAssigned"
  },
  "location": "westus",
  "name": "TestBkpVault",
  "properties": {
    "provisioningState": "Succeeded",
    "storageSettings": [
      {
        "datastoreType": "VaultStore",
        "type": "LocallyRedundant"
      }
    ]
  },
  "resourceGroup": "testBkpVaultRG",
  "systemData": null,
  "tags": null,
  "type": "Microsoft.DataProtection/backupVaults"
}

Maak een back-upbeleid

Nadat u een kluis hebt gemaakt, kunt u een back-upbeleid maken om PostgreSQL-databases te beveiligen. U kunt ook een back-upbeleid maken voor PostgreSQL-databases met behulp van REST API.

Inzicht in het PostgreSQL-back-upbeleid

Terwijl schijfback-ups meerdere back-ups per dag bieden en blobback-up een continue back-up is zonder trigger, biedt PostgreSQL-back-up archiefbeveiliging. De back-upgegevens die eerst naar de kluis zijn verzonden, kunnen worden verplaatst naar de archieflaag volgens een vastgestelde regel of een levenscyclus.

In deze context kan de volgende hiërarchie u helpen het back-upbeleidsobject voor PostgreSQL te begrijpen:

  • Beleidsregel
    • Backupregel
      • Backupparameter
        • Back-uptype (in dit geval een volledige databaseback-up)
        • Eerste gegevensarchief (waarbij de back-ups in eerste instantie terechtkomen)
        • Trigger (startpunt - hoe de back-up wordt geactiveerd)
          • Schema
          • Standaardcriteria voor taggen (een standaardtag die alle geplande back-ups koppelt aan de bewaarregel)
    • Standaardretentieregel (een regel die wordt toegepast op alle back-ups, standaard in het eerste gegevensarchief)

Het beleidsobject definieert met welke typen back-ups worden geactiveerd, hoe ze worden geactiveerd (via een schema), waarmee ze worden gelabeld, waar ze terechtkomen (een gegevensarchief) en de levenscyclus van hun gegevens in een gegevensarchief.

Het standaard PowerShell-object voor PostgreSQL zegt dat elke week een volledige back-up moet worden geactiveerd. De back-ups bereiken de kluis, waar ze drie maanden worden opgeslagen.

Als u de archieflaag wilt toevoegen aan het beleid, moet u bepalen wanneer de gegevens worden verplaatst van de kluis naar het archief, hoe lang de gegevens in het archief blijven en welke van de geplande back-ups moeten worden gelabeld als archiveringsbaar. U moet een bewaarregel toevoegen waarmee de levenscyclus van de back-upgegevens van het kluisdatastore naar het archiefdatastore wordt gedefinieerd. De bewaarregel bepaalt ook hoe lang de back-upgegevens in het archiefgegevensarchief blijven. Vervolgens moet u een tag toevoegen waarmee de geplande back-ups worden gemarkeerd als in aanmerking komen om te worden gearchiveerd.

Het resulterende PowerShell-object is als volgt:

  • Beleidsregel
    • Backupregel
      • Backupparameter
        • Back-uptype (in dit geval een volledige databaseback-up)
        • Eerste gegevensarchief (waarbij de back-ups in eerste instantie terechtkomen)
        • Trigger (startpunt - hoe de back-up wordt geactiveerd)
          • Schema
          • Standaardcriteria voor taggen (een standaardtag die alle geplande back-ups koppelt aan de bewaarregel)
          • Nieuwe tagcriteria voor de nieuwe bewaarregel met dezelfde naam
    • Standaardretentieregel (een regel die wordt toegepast op alle back-ups, standaard in het eerste gegevensarchief)
    • Nieuwe bewaarregel
      • Levenscyclus
        • Brongegevensarchief
        • Periode voor verwijdering in het brongegevensarchief
        • Kopiëren naar het doelgegevensarchief

De beleidssjabloon ophalen

Als u meer wilt weten over de interne onderdelen van een back-upbeleid voor postgreSQL-databaseback-up, haalt u de beleidssjabloon op met behulp van de az dataprotection backup-policy get-default-policy-template opdracht. Met deze opdracht wordt de standaardbeleidssjabloon voor een gegevensbrontype geretourneerd. Gebruik deze beleidssjabloon om een nieuw beleid te maken.

az dataprotection backup-policy get-default-policy-template --datasource-type AzureDatabaseForPostgreSQL
{
  "datasourceTypes": [
    "Microsoft.DBforPostgreSQL/servers/databases"
  ],
  "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"
    }
  ]
}

De beleidssjabloon bestaat uit een trigger (waarmee wordt bepaald wat de back-up activeert) en een levenscyclus (waarmee wordt bepaald wanneer de back-up moet worden verwijderd, gekopieerd of verplaatst). In een PostgreSQL-databaseback-up is de standaardwaarde voor de trigger een geplande wekelijkse trigger (één back-up om de zeven dagen). Elke back-up wordt drie maanden bewaard.

Geplande actie

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

Standaardlevenscyclus voor de hechtenisregel

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

De beleidssjabloon wijzigen

In Azure PowerShell kunt u objecten gebruiken als faseringslocaties om alle wijzigingen uit te voeren. In de Azure CLI moet u bestanden gebruiken, omdat er geen idee is van objecten. Elke bewerking moet worden omgeleid naar een nieuw bestand, waarbij inhoud wordt gelezen uit het invoerbestand en wordt omgeleid naar het uitvoerbestand. U kunt de naam van het bestand later wijzigen als vereist tijdens het gebruik ervan in een script.

Het schema wijzigen

De standaardbeleidssjabloon biedt één keer per week een back-up. U kunt het schema voor de back-up wijzigen zodat deze meerdere dagen per week plaatsvindt. Als u de planning wilt wijzigen, gebruikt u de az dataprotection backup-policy trigger set opdracht.

In het volgende voorbeeld wordt de wekelijkse back-up gewijzigd in zondag, woensdag en vrijdag van elke week. De schemadatummatrix vermeldt de datums en de dagen van de week voor deze datums worden als dagen van de week genomen. U moet ook opgeven dat deze schema's elke week moeten worden herhaald. Het schema-interval is 1 dus en het intervaltype is 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

Een nieuwe bewaarregel toevoegen

Als u archiefbeveiliging wilt toevoegen, moet u de beleidssjabloon wijzigen.

De standaardsjabloon heeft een levenscyclus voor het eerste gegevensarchief onder de standaardretentieregel. In dit scenario zegt de regel dat de back-upgegevens na drie maanden moeten worden verwijderd. U moet een nieuwe bewaarregel toevoegen die definieert wanneer de gegevens naar het archiefgegevensarchief worden verplaatst. Het komt erop neer dat back-upgegevens eerst worden gekopieerd naar de archiefdatastore, en vervolgens worden verwijderd in de dataopslagplaats van de kluis.

De regel moet ook definiëren hoe lang de gegevens in het archiefgegevensarchief moeten worden bewaard. Gebruik de az dataprotection backup-policy retention-rule create-lifecycle opdracht om nieuwe levenscycli te maken. Als u deze levenscyclus wilt koppelen aan nieuwe of bestaande regels, gebruikt u de az dataprotection backup-policy retention-rule set opdracht.

In het volgende voorbeeld wordt een nieuwe bewaarregel gemaakt met de naam Monthly. In deze regel wordt de eerste geslaagde back-up van elke maand gedurende zes maanden bewaard in de kluis, verplaatst naar de archieflaag en gedurende 24 maanden bewaard in de archieflaag.

az dataprotection backup-policy retention-rule create-lifecycle --retention-duration-count 6 --retention-duration-type Months --source-datastore VaultStore --target-datastore ArchiveStore --copy-option CopyOnExpiryOption > VaultToArchiveLifeCycle.JSON

az dataprotection backup-policy retention-rule create-lifecycle --retention-duration-count 24 --retention-duration-type Months -source-datastore ArchiveStore > OnArchiveLifeCycle.JSON

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

Een tag en de relevante criteria toevoegen

Nadat u een bewaarregel hebt gemaakt, moet u een bijbehorende tag maken in de Trigger eigenschap van het back-upbeleid. Als u nieuwe tagcriteria wilt maken, gebruikt u de az dataprotection backup-policy tag create-absolute-criteria opdracht. Als u de bestaande tag wilt bijwerken of een nieuwe tag wilt maken, gebruikt u de az dataprotection backup-policy tag set opdracht.

In het volgende voorbeeld wordt een nieuwe tag gemaakt, samen met de criteria. Dit is de eerste geslaagde back-up van de maand. De tag heeft dezelfde naam als de bijbehorende bewaarregel die moet worden toegepast.

In dit voorbeeld hebben de tagcriteria de naam 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

Als het schema meerdere back-ups per week is (elke zondag, woensdag en donderdag, zoals opgegeven in het vorige voorbeeld) en u de back-ups van zondag en vrijdag wilt archiveren, kunt u de criteria voor taggen wijzigen met behulp van de az dataprotection backup-policy tag create-generic-criteria opdracht:

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

Een nieuw PostgreSQL-back-upbeleid maken

Nadat u de sjabloon hebt aangepast aan de vereisten, gebruikt u de az dataprotection backup-policy create opdracht om een beleid te maken met behulp van de gewijzigde sjabloon:

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

Backup instellen

Nadat u de kluis en het beleid hebt gemaakt, moet u nadenken over drie kritieke punten om een back-up te maken van een PostgreSQL-database in Azure Database for PostgreSQL.

Inzicht in belangrijke entiteiten

Een back-up van postgreSQL-database maken

Haal de Resource Manager-id van de PostgreSQL-database op waarvan een back-up moet worden gemaakt. Deze id fungeert als de id van de database. In het volgende voorbeeld wordt een database gebruikt met de naam empdb11 onder de PostgreSQL-server testposgresql, die aanwezig is in de resourcegroep ossrg onder een ander abonnement. In het voorbeeld wordt Bash gebruikt.

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

Sleutelbewaarplaats

De Azure Backup-service slaat de gebruikersnaam en het wachtwoord niet op om verbinding te maken met de PostgreSQL-database. In plaats daarvan plaatst de back-upbeheerder de sleutels in de sleutelkluis. De Azure Backup-service opent vervolgens de sleutelkluis, leest de sleutels en krijgt toegang tot de database.

In het volgende voorbeeld wordt Bash gebruikt. Noteer de geheime id van de relevante sleutel.

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

Reservekopiekluis

Een Backup-kluis moet verbinding maken met de PostgreSQL-server en vervolgens toegang krijgen tot de database via de sleutels die aanwezig zijn in de sleutelkluis. De Backup-kluis vereist dus toegang tot de PostgreSQL-server en de sleutelkluis. Toegang wordt verleend tot de beheerde identiteit van de back-upkluis.

Lees meer over de machtigingen die u moet verlenen aan de beheerde identiteit van de Backup-kluis op de PostgreSQL-server en de sleutelkluis waarin de sleutels worden opgeslagen in de database.

De aanvraag voorbereiden

Nadat u alle relevante machtigingen hebt ingesteld, voert u de configuratie van de back-up in twee stappen uit:

  1. Bereid het verzoek voor met behulp van de relevante kluis, het beleid en de PostgreSQL-database in het az dataprotection backup-instance initialize commando.
  2. Dien de aanvraag in om een back-up van de database te maken met behulp van de az dataprotection backup-instance create opdracht.
az dataprotection backup-instance initialize --datasource-id $ossId --datasource-type AzureDatabaseForPostgreSQL -l <vault-location> --policy-id <policy_arm_id>  --secret-store-type AzureKeyVault --secret-store-uri $keyURI > OSSBkpInstance.JSON

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

Een on-demand back-up uitvoeren

U moet een bewaarregel opgeven terwijl u de back-up activeert. Als u de bewaarregels in een beleid wilt bekijken, bladert u door het JSON-bestand van het beleid. In het volgende voorbeeld zijn er twee bewaarregels met de namen Default en Monthly. In dit artikel wordt de Monthly regel gebruikt voor de back-up op aanvraag.

az dataprotection backup-policy show  -g ossdemorg --vault-name ossdemovault-1 --subscription e3d2d341-4ddb-4c5d-9121-69b7e719485e --name osspol5
{
  "id": "/subscriptions/e3d2d341-4ddb-4c5d-9121-69b7e719485e/resourceGroups/ossdemorg/providers/Microsoft.DataProtection/backupVaults/ossdemovault-1/backupPolicies/osspol5",
  "name": "osspol5",
  "properties": {
    "datasourceTypes": [
      "Microsoft.DBforPostgreSQL/servers/databases"
    ],
    "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"
}

Gebruik de az dataprotection backup-instance adhoc-backup opdracht om een back-up op aanvraag te activeren:

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

Banen bijhouden

Volg alle taken met behulp van de az dataprotection job list opdracht. U kunt alle taken weergeven en een bepaalde taakdetails ophalen.

U kunt ook Az.ResourceGraph gebruiken om alle taken in Backup-kluizen te volgen. Gebruik de az dataprotection job list-from-resourcegraph opdracht om de relevante taken op te halen in Back-upkluizen:

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