Freigeben über


Sichern von Azure PostgreSQL-Datenbanken mit Azure CLI

Dieser Artikel erklärt, wie man eine Azure PostgreSQL Datenbank mit Azure CLI sichert.

In diesem Artikel lernen Sie Folgendes:

  • Erstellen eines Sicherungstresors
  • Erstellen einer Sicherungsrichtlinie
  • Konfigurieren Sie eine Sicherung einer Azure PostgreSQL-Datenbank
  • Ausführen eines bedarfsgesteuerten Sicherungsauftrag

Informationen zu den unterstützten Szenarien und Einschränkungen von SQL-Datenbanken finden Sie in der Unterstützungsmatrix.

Erstellen eines Sicherungstresors

Der Sicherungstresor ist eine Speicherentität in Azure. Dadurch werden die Sicherungsdaten für neue von Azure Backup unterstützte Workloads gespeichert. Beispiele: Azure Database for PostgreSQL-Server, Blobs in einem Speicherkonto und Azure-Datenträger. Backup-Tresore helfen bei der Organisation Ihrer Backup-Daten und minimieren gleichzeitig den Verwaltungsaufwand. Sicherungstresore basieren auf dem Azure Resource Manager-Modell von Azure, das erweiterte Funktionen bietet, die das Schützen von Sicherungsdaten erleichtern.

Bevor Sie einen Sicherungstresor erstellen, wählen Sie die Speicherredundanz der Daten im Tresor aus. Anschließend erstellen Sie den Sicherungstresor mit der ausgewählten Speicherredundanz und dem angegebenen Speicherort.

In diesem Artikel erstellen wir einen Sicherungstresor namens TestBkpVault in der Region „USA, Westen“ (westus) unter der Ressourcengruppe testBkpVaultRG. Verwenden Sie den Befehl az dataprotection vault create, um einen Sicherungstresor zu erstellen. Weitere Informationen finden Sie unter Erstellen eines Sicherungstresors.

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": "2ca1d5f7-38b3-4b61-aa45-8147d7e0edbc",
    "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"
}

Nachdem der Tresor erstellt wurde, erstellen wir eine Backup-Richtlinie zum Schutz der Azure PostgreSQL-Datenbanken.

Erstellen einer Sicherungsrichtlinie

Verständnis der PostGreSQL-Backup-Richtlinie

Während das Disk-Backup mehrere Backups pro Tag bietet und das Blob-Backup ein kontinuierliches Backup ohne Trigger ist, bietet das PostgreSQL-Backup Archivschutz. Die zunächst in den Tresor gesendeten Sicherungsdaten können dann gemäß einer definierten Regel oder einem Lebenszyklus in die Archiv-Ebene verschoben werden. In diesem Zusammenhang wollen wir das Sicherungsrichtlinienobjekt für PostgreSQL verstehen.

  • PolicyRule
    • BackupRule
      • BackupParameter
        • BackupType (In diesem Fall eine vollständige Datenbanksicherung)
        • Anfänglicher Datenspeicher (Wo die Sicherungen anfänglich gespeichert werden)
        • Trigger (Wie die Sicherung ausgelöst wird)
          • Zeitplanbasiert
          • Standardtaggingkriterien (ein Standardtag für alle geplanten Sicherungen, das die Sicherungen mit der Aufbewahrungsregel verknüpft)
    • Standard-Aufbewahrungsregel (eine Regel, die standardmäßig auf alle Sicherungen auf dem ursprünglichen Datenspeicher angewendet wird)

Dieses Objekt legt also fest, welche Art von Backups ausgelöst werden, wie sie ausgelöst werden (über einen Zeitplan), mit welchen Tags sie versehen werden, wo sie landen (ein Datenspeicher) und wie der Lebenszyklus der Backup-Daten in einem Datenspeicher aussieht. Das Standard-PowerShell-Objekt für PostgreSQL besagt, dass jede Woche eine vollständige Sicherung ausgelöst wird, die dann in den Tresor gelangt, wo sie drei Monate lang gespeichert wird.

Wenn Sie die Schicht Archiv zur Richtlinie hinzufügen möchten, müssen Sie entscheiden, wann die Daten vom Tresor ins Archiv verschoben werden, wie lange die Daten im Archiv verbleiben und welche der geplanten Backups als archivierbar gekennzeichnet werden sollen. Daher müssen Sie eine Aufbewahrungsregel hinzufügen, in der der Lebenszyklus der Sicherungsdaten vom Tresor-Datenspeicher zum Archiv-Datenspeicher definiert wird, und wie lange sie im Archiv-Datenspeicher verbleiben werden. Dann müssen Sie ein Tag hinzufügen, das die geplanten Backups als für die Archivierung geeignet markiert.

Das resultierende PowerShell-Objekt sieht wie folgt aus:

  • PolicyRule
    • BackupRule
      • BackupParameter
        • BackupType (In diesem Fall eine vollständige Datenbanksicherung)
        • Anfänglicher Datenspeicher (Wo die Sicherungen anfänglich gespeichert werden)
        • Trigger (Wie die Sicherung ausgelöst wird)
          • Zeitplanbasiert
          • Standardtaggingkriterien (ein Standardtag für alle geplanten Sicherungen, das die Sicherungen mit der Aufbewahrungsregel verknüpft)
          • Neue Taggingkriterien für die neue Aufbewahrungsregel mit dem gleichen Namen „X“
    • Standard-Aufbewahrungsregel (eine Regel, die standardmäßig auf alle Sicherungen auf dem ursprünglichen Datenspeicher angewendet wird)
    • Eine neue Aufbewahrungsregel mit dem Namen „X“
      • Lebenszyklus
        • Quelldatenspeicher
        • Löschen nach einem festgelegten Zeitraum im Quelldatenspeicher
        • Kopieren auf den Zieldatenspeicher

Abrufen der Richtlinienvorlage

Um die inneren Komponenten einer Backup-Richtlinie für Azure PostgreSQL-Datenbanksicherung zu verstehen, rufen Sie die Richtlinienvorlage mit dem Befehl az dataprotection backup-policy get-default-policy-template ab. Dieser Befehl gibt eine Standardrichtlinienvorlage für einen angegebenen DataSource-Typ zurück. Verwenden Sie diese Richtlinienvorlage, um eine neue Richtlinie zu erstellen.

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"
    }
  ]
}

Die Richtlinienvorlage besteht aus einem Trigger (der entscheidet, was die Sicherung auslöst) und einem Lebenszyklus (der entscheidet, wann die Sicherung gelöscht/kopiert bzw. verschoben werden soll). Bei der Azure PostgreSQL-Datenbanksicherung ist der Standardwert für den Trigger ein geplanter wöchentlicher Trigger (ein Backup alle sieben Tage) und die Aufbewahrung jedes Backups für drei Monate.

Geplanter Trigger:

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

Standardlebenszyklus der Aufbewahrungsregel:

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

Ändern der Richtlinienvorlage

Wichtig

In Azure PowerShell können Objekte als Bereitstellungsorte verwendet werden, um alle Änderungen durchzuführen. In Azure CLI müssen wir Dateien verwenden, da es keinen Begriff für Objekte gibt. Jeder Bearbeitungsvorgang sollte in eine neue Datei umgeleitet werden, wobei der Inhalt aus der Eingabedatei gelesen und in die Ausgabedatei umgeleitet wird. Sie können die Datei später nach Bedarf umbenennen, wenn Sie sie in einem Skript verwenden.

Ändern Sie den Zeitplan

Die Standardrichtlinienvorlage bietet einmal pro Woche eine Sicherung an. Sie können den Zeitplan so ändern, dass die Sicherung an mehreren Tagen pro Woche erfolgt. Um den Zeitplan zu ändern, verwenden Sie den Befehl az dataprotection backup-policy trigger set.

Im folgenden Beispiel wird die wöchentliche Sicherung so geändert, dass sie an jedem Sonntag, Mittwoch und Freitag jeder Woche erfolgt. Das Datumsarray für den Zeitplan erwähnt die Datumsangaben. Die Wochentage dieser Datumsangaben werden als Wochentage verwendet. Sie müssen auch angeben, dass diese Zeitpläne jede Woche wiederholt werden sollen. Das Zeitplanintervall ist also "1" und der Intervalltyp ist "Wöchentlich".

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

Hinzufügen einer neuen Aufbewahrungsregel

Wenn Sie den Schutz archiv hinzufügen möchten, müssen Sie die Richtlinienvorlage wie folgt ändern.

Die Standardvorlage hat einen Lebenszyklus für den ursprünglichen Datenspeicher unter der Standardaufbewahrungsregel. In diesem Szenario besagt die Regel, dass die Sicherungsdaten nach drei Monaten zu löschen sind. Sie sollten eine neue Aufbewahrungsregel hinzufügen, die festlegt, wann die Daten in den Archiv-Datenspeicher verschoben werden, d.h. die Sicherungsdaten werden zuerst in den Archiv-Datenspeicher kopiert und dann im Tresor-Datenspeicher gelöscht. Außerdem sollte die Regel festlegen, wie lange die Daten im Datenspeicher Archiv aufbewahrt werden. Verwenden Sie den Befehl az dataprotection backup-policy retention-rule create-lifecycle, um neue Lebenszyklen zu erstellen, und verwenden Sie den Befehl az dataprotection backup-policy retention-rule set, um sie mit den neuen Regeln oder den vorhandenen Regeln zu verknüpfen.

Im folgenden Beispiel wird eine neue Aufbewahrungsregel mit dem Namen Monatlich erstellt, bei der die erste erfolgreiche Sicherung eines jeden Monats sechs Monate lang im Tresorraum aufbewahrt, dann in die Archivschicht verschoben und 24 Monate lang in der Archivschicht aufbewahrt werden soll.

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

Hinzufügen eines Tags und der entsprechenden Kriterien

Sobald eine Aufbewahrungsregel erstellt ist, müssen Sie einen entsprechenden Tag in der Eigenschaft Trigger der Backup-Richtlinie erstellen. Verwenden Sie den Befehl az dataprotection backup-policy tag create-absolute-criteria, um ein neues Tagging-Kriterium zu erstellen und verwenden Sie den Befehl az dataprotection backup-policy tag set, um das vorhandene Tag zu aktualisieren oder ein neues Tag zu erstellen.

Im folgenden Beispiel wird ein neues Tag zusammen mit den Kriterien erstellt, der ersten erfolgreichen Sicherung des Monats. Das Tag hat denselben Namen wie die entsprechende anzuwendende Aufbewahrungsregel.

In diesem Beispiel sollten die Tag-Kriterien Monatlich heißen.

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

Angenommen, der Zeitplan sieht mehrere Backups pro Woche vor (jeden Sonntag, Mittwoch und Donnerstag, wie im obigen Beispiel angegeben) und Sie möchten die Backups von Sonntag und Freitag archivieren, dann können die Tagging-Kriterien mit dem Befehl az dataprotection backup-policy tag create-generic-criteria wie folgt geändert werden.

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

Erstellen Sie eine neue PostgreSQL-Sicherungsrichtlinie

Sobald die Vorlage entsprechend den Anforderungen geändert wurde, verwenden Sie den Befehl az dataprotection backup-policy create, um eine Richtlinie mit der geänderten Vorlage zu erstellen.

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

Konfigurieren der Sicherung

Sobald der Tresor und die Richtlinie erstellt sind, gibt es drei wichtige Punkte, die Sie beachten müssen, um eine Azure Database for PostgreSQL-Instanz zu schützen.

Wichtige involvierte Entitäten

Zu schützende PostGreSQL-Datenbank

Holen Sie die Azure Resource Manager ID (ARM ID) des zu schützenden PostgreSQL. Dieser dient als Bezeichner der Datenbank. Als Beispiel wird eine Datenbank mit dem Namen empdb11 unter einem PostgreSQL-Server testposgresql verwendet, die in der Ressourcengruppe ossrg unter einem anderen Abonnement vorhanden ist.

Das folgende Beispiel verwendet bash.

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

Azure Key Vault

Der Azure Backup-Dienst speichert den Benutzernamen und das Kennwort für die Verbindung mit der PostgreSQL-Datenbank nicht. Stattdessen muss der Sicherungsadministrator die Schlüssel in den Schlüsseltresor einspeisen. Anschließend greift der Backup-Dienst auf den Schlüsseltresor zu, liest die Schlüssel und greift dann auf die Datenbank zu. Notieren Sie sich den Geheimnisbezeichner des relevanten Schlüssels.

Das folgende Beispiel verwendet bash.

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

Sicherungstresor

Backup Vault muss sich mit dem PostgreSQL-Server verbinden und dann über die im Key Vault vorhandenen Schlüssel auf die Datenbank zugreifen. Daher ist ein Zugriff auf den PostgreSQL-Server und den Key Vault erforderlich. Der verwalteten Dienstidentität (Managed Service Identity, MSI) des Sicherungstresors wird Zugriff gewährt.

Sehen Sie sich die Berechtigungen an, die Sie der verwalteten Dienstidentität (MSI) des Sicherungstresors für den PostgreSQL-Server und den Azure-Schlüsseltresor erteilen sollten, in dem Schlüssel der Datenbank gespeichert sind.

Vorbereiten der Anforderung

Nachdem alle relevanten Berechtigungen festgelegt wurden, führen Sie die Konfiguration der Sicherung in zwei Schritten aus.

  1. Wir bereiten die entsprechende Anfrage vor, indem wir den entsprechenden Tresor, die Richtlinie und die PostgreSQL-Datenbank mit dem Befehl az dataprotection backup-instance initialize verwenden.
  2. Die Anforderung zum Schutz der Datenbank wird mit dem Befehl az dataprotection backup-instance create gestellt.
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

Ausführen einer On-Demand-Sicherung

Sie müssen eine Aufbewahrungsregel angeben, während Sie die Sicherung auslösen. Um die Aufbewahrungsregeln in der Richtlinie anzuzeigen, navigieren Sie durch die JSON-Datei der Richtlinie für Aufbewahrungsregeln. Im folgenden Beispiel gibt es zwei Aufbewahrungsregeln mit den Namen Standard und Monatlich. Wir verwenden die Regel Monatlich für die On-Demand-Sicherung.

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"
}

Verwenden Sie den Befehl az dataprotection backup-instance adhoc-backup, um eine bedarfsgesteuerte Sicherung auszulösen.

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

Nachverfolgen von Aufträgen

Verfolgen Sie alle Aufträge mithilfe des Befehls az dataprotection job list nach. Sie können alle Aufträge auflisten und ein bestimmtes Auftragsdetail abrufen.

Sie können auch Az.ResourceGraph verwenden, um alle Aufträge über alle Backup-Depots hinweg zu verfolgen. Verwenden Sie den Befehl az dataprotection job list-from-resourcegraph, um die relevanten Aufträge zu finden, die sich in den Backup-Depots befinden.

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

Nächste Schritte