Delen via


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

In dit artikel wordt uitgelegd hoe u een back-up maakt van een Azure PostgreSQL-database met behulp van Azure CLI.

In dit artikel leert u het volgende:

  • Een Backup-kluis maken
  • Maak een back-upbeleid
  • Een back-up van een Azure PostgreSQL-database configureren
  • Een back-uptaak op aanvraag uitvoeren

Zie de ondersteuningsmatrix voor ondersteunde scenario's en beperkingen voor informgreSQL-databases.

Een Backup-kluis maken

Backup Vault is een opslagentiteit in Azure. Hiermee worden de back-upgegevens opgeslagen voor nieuwe workloads die door Azure Backup worden ondersteund. Bijvoorbeeld Azure Database for PostgreSQL-servers, blobs in een opslagaccount en Azure Disks. 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 maken we een Backup Vault TestBkpVault, in de regio westus, onder de resourcegroep testBkpVaultRG. Gebruik de opdracht az dataprotection vault create 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"
}

Nadat de kluis is gemaakt, gaan we een back-upbeleid maken om Azure PostgreSQL-databases te beveiligen.

Een back-upbeleid maken

Informatie over back-upbeleid van PostGreSQL

Hoewel 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 worden verzonden, kunnen vervolgens worden verplaatst naar de archieflaag volgens een gedefinieerde regel of een levenscyclus. In deze context begrijpen we het back-upbeleidsobject voor PostgreSQL.

  • PolicyRule
    • BackupRule
      • BackupParameter
        • BackupType (in dit geval een volledige databaseback-up)
        • Initiële gegevensopslag (waar komen de back-ups in eerste instantie terecht)
        • Trigger (hoe de back-up wordt geactiveerd)
          • Op basis van planning
          • Standaardcriteria voor taggen (een standaardtag voor alle geplande back-ups. Met deze tag worden de back-ups gekoppeld aan de bewaarregel)
    • Standaardretentieregel (een regel die wordt toegepast op alle back-ups, standaard in het eerste gegevensarchief)

Dit object definieert dus welk type back-ups worden geactiveerd, hoe ze worden geactiveerd (via een schema), waarmee ze worden gelabeld, waar ze terechtkomen (een gegevensarchief) en de levenscyclus van de back-upgegevens in een gegevensarchief. Het standaard PowerShell-object voor PostgreSQL zegt elke week een volledige back-up te activeren en ze 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 kluis naar archief, hoe lang de gegevens in het archief blijven en welke van de geplande back-ups moeten worden gelabeld als archiveringsbaar. Daarom moet u een bewaarregel toevoegen, waarbij de levenscyclus van de back-upgegevens wordt gedefinieerd vanuit het gegevensarchief van de kluis om gegevensarchief te archiveren en hoe lang ze 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:

  • PolicyRule
    • BackupRule
      • BackupParameter
        • BackupType (in dit geval een volledige databaseback-up)
        • Initiële gegevensopslag (waar komen de back-ups in eerste instantie terecht)
        • Trigger (hoe de back-up wordt geactiveerd)
          • Op basis van planning
          • Standaardcriteria voor taggen (een standaardtag voor alle geplande back-ups. Met deze tag worden de back-ups gekoppeld aan de bewaarregel)
          • Nieuwe tagcriteria voor de nieuwe bewaarregel met dezelfde naam 'X'
    • Standaardretentieregel (een regel die wordt toegepast op alle back-ups, standaard in het eerste gegevensarchief)
    • Een nieuwe bewaarregel met de naam X
      • Levenscyclus
        • Brongegevensarchief
        • Verwijderen na een periode in het brongegevensarchief
        • Kopiëren naar doelgegevensarchief

De beleidssjabloon ophalen

Als u de interne onderdelen van een back-upbeleid voor Azure PostgreSQL-databaseback-ups wilt begrijpen, haalt u de beleidssjabloon op met behulp van de opdracht az dataprotection backup-policy get-default-policy-template . Met deze opdracht wordt een standaardbeleidssjabloon geretourneerd voor een bepaald gegevensbrontype. 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/verplaatst). In azure PostgreSQL-databaseback-up is de standaardwaarde voor trigger een geplande wekelijkse trigger (één back-up om de zeven dagen) en om elke back-up gedurende drie maanden te bewaren.

Geplande trigger:

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

Standaardlevenscyclus van bewaarregels:

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

De beleidssjabloon wijzigen

Belangrijk

In Azure PowerShell kunnen objecten worden gebruikt als faseringslocaties om alle wijzigingen uit te voeren. In Azure CLI moeten we 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 opnieuw wordt omgeleid naar het uitvoerbestand. U kunt de naam van het bestand later wijzigen als vereist tijdens het gebruik 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 opdracht az dataprotection backup-policy trigger set .

In het volgende voorbeeld wordt de wekelijkse back-up gewijzigd om elke zondag, woensdag en vrijdag van elke week een back-up te maken. De schemadatummatrix vermeldt de datums en de dagen van de week van die 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 dus 1 en het intervaltype is Wekelijks.

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 de archiefbeveiliging wilt toevoegen, moet u de beleidssjabloon als volgt 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, dat wil gezegd dat back-upgegevens eerst worden gekopieerd naar het archiefgegevensarchief en vervolgens worden verwijderd in het gegevensarchief van de kluis. De regel moet ook definiëren hoe lang de gegevens worden bewaard in het archiefgegevensarchief . Gebruik de opdracht az dataprotection backup-policy retention-rule create-lifecycle om nieuwe levenscycluss te maken en gebruik de opdracht az dataprotection backup-policy retention-rule set om deze te koppelen aan de nieuwe regels of aan de bestaande regels.

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

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

Zodra een bewaarregel is gemaakt, moet u een bijbehorende tag maken in de eigenschap Trigger van het back-upbeleid. Gebruik de opdracht az dataprotection backup-policy tag create-absolute-criteria om een nieuwe tagcriteria te maken en gebruik de set-opdracht az dataprotection backup-policy om de bestaande tag bij te werken of een nieuwe tag te maken.

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

In dit voorbeeld moeten de tagcriteria maandelijks worden genoemd.

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

Stel dat als het schema meerdere back-ups per week is (elke zondag, woensdag, donderdag zoals opgegeven in het bovenstaande voorbeeld) en u de back-ups van zondag en vrijdag wilt archiveren, kunt u de criteria voor taggen als volgt wijzigen met behulp van de opdracht az dataprotection 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

Een nieuw PostgreSQL-back-upbeleid maken

Zodra de sjabloon is gewijzigd volgens de vereisten, gebruikt u de opdracht az dataprotection backup-policy create 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

Back-up configureren

Zodra de kluis en het beleid zijn gemaakt, zijn er drie kritieke punten die u moet overwegen om een Azure PostgreSQL-database te beveiligen.

Betrokken belangrijke entiteiten

PostGreSQL-database die moet worden beveiligd

Haal de ARM-id (Azure Resource Manager ID) van PostgreSQL op die moet worden beveiligd. Dit fungeert als de id van de database. We gebruiken een voorbeeld van een database met de naam empdb11 onder een PostgreSQL-servertestposgresql, die aanwezig is in de resourcegroep ossrg onder een ander abonnement.

In het volgende voorbeeld wordt bash gebruikt.

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

Azure Key Vault

De Azure Backup-service slaat de gebruikersnaam en het wachtwoord niet op om verbinding te maken met de PostgreSQL-database. In plaats daarvan moet de back-upbeheerder de sleutels in de sleutelkluis seeden. Vervolgens krijgt de Backup-service toegang tot de sleutelkluis, leest u de sleutels en opent u vervolgens de database. Noteer de geheime id van de relevante sleutel.

In het volgende voorbeeld wordt bash gebruikt.

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

Back-upkluis

Back-upkluis moet verbinding maken met de PostgreSQL-server en vervolgens toegang krijgen tot de database via de sleutels die aanwezig zijn in de sleutelkluis. Daarom is toegang tot de PostgreSQL-server en de sleutelkluis vereist. Toegang wordt verleend aan de Managed Service Identity (MSI) van de Backup-kluis.

Zie de machtigingen die u moet verlenen aan de Managed Service Identity (MSI) van de Backup-kluis op de PostgreSQL-server en Azure Key Vault waarin sleutels worden opgeslagen in de database.

De aanvraag voorbereiden

Zodra alle relevante machtigingen zijn ingesteld, wordt de configuratie van de back-up in twee stappen uitgevoerd.

  1. We bereiden de relevante aanvraag voor met behulp van de relevante kluis, het beleid, de PostgreSQL-database met behulp van de opdracht az dataprotection backup-instance initialize .
  2. We verzenden de aanvraag om de database te beveiligen met behulp van de opdracht az dataprotection backup-instance create .
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 een back-up activeert. Als u de bewaarregels in beleid wilt weergeven, navigeert u door het JSON-beleidbestand voor bewaarregels. In het volgende voorbeeld zijn er twee bewaarregels met de namen Default en Monthly. We gebruiken de maandelijkse regel 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"
}

Als u een back-up op aanvraag wilt activeren, gebruikt u de opdracht az dataprotection backup-instance adhoc-backup .

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

Taken bijhouden

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

U kunt Az.ResourceGraph ook gebruiken om alle taken in alle Backup-kluizen bij te houden. Gebruik de opdracht az dataprotection job list-from-resourcegraph om de relevante taken op te halen die zich in Backup-kluizen bevinden.

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

Volgende stappen