Freigeben über


Sichern von PostgreSQL-Datenbanken mithilfe der Azure CLI

In diesem Artikel wird das Sichern von PostgreSQL-Datenbanken auf virtuellen Azure-Computern mithilfe der Azure CLI beschrieben. Sie können die Sicherung auch mithilfe von Azure-Portal, Azure PowerShell und REST-API für PostgreSQL-Datenbanken konfigurieren.

Erfahren Sie mehr über die unterstützten Szenarien und häufig gestellte Fragen zum Sichern der Azure-Datenbank für PostgreSQL.

Erstellen eines Sicherungstresors

Ein Sicherungstresor ist eine Speicherentität in Azure. Es speichert die Sicherungsdaten für neue Workloads, die Azure Backup unterstützt, z. B. Azure-Datenbank für 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 Sie einen Sicherungstresor mit dem Namen TestBkpVaultin der westus Region unter der Ressourcengruppe testBkpVaultRG. Verwenden Sie den az dataprotection vault create Befehl, um einen Backupspeicher zu erstellen. Erfahren Sie mehr über das Erstellen eines Backupspeichers

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

Erstellen einer Sicherungsrichtlinie

Nachdem Sie einen Tresor erstellt haben, können Sie eine Sicherungsrichtlinie erstellen, um PostgreSQL-Datenbanken zu schützen. Sie können auch eine Sicherungsrichtlinie für PostgreSQL-Datenbanken mithilfe der REST-API erstellen.

Verstehen Sie die PostgreSQL-Sicherungsrichtlinie

Während die Festplattensicherung mehrere Sicherungen pro Tag bietet und die Blob-Sicherung eine kontinuierliche Sicherung ohne Trigger ist, bietet die PostgreSQL-Sicherung Archivschutz. Die Sicherungsdaten, die zuerst an den Tresor gesendet werden, können gemäß einer definierten Regel oder einem Lebenszyklus in die Archivebene verschoben werden.

In diesem Zusammenhang kann Ihnen die folgende Hierarchie helfen, das Sicherungsrichtlinienobjekt für PostgreSQL zu verstehen:

  • Richtlinienregel
    • Sicherungsregel
      • Sicherungsparameter
        • Sicherungstyp (eine vollständige Datenbanksicherung in diesem Fall)
        • Anfänglicher Datenspeicher (wo die Sicherungen anfänglich landen)
        • Trigger (wie die Sicherung ausgelöst wird)
          • Zeitplan
          • Standard-Markierungskriterien (eine voreingestellte Kennzeichnung, die alle geplanten Sicherungen mit der Aufbewahrungsregel verknüpft)
    • Standardaufbewahrungsregel (eine Regel, die standardmäßig auf alle Sicherungen angewendet wird, im ursprünglichen Datenspeicher)

Das Richtlinienobjekt definiert, welche Arten von Sicherungen ausgelöst werden, wie sie ausgelöst werden (über einen Zeitplan), wo sie kategorisiert sind, wo sie landen (ein Datenspeicher) und der Lebenszyklus ihrer Daten in einem Datenspeicher.

Das Standardmäßige PowerShell-Objekt für PostgreSQL sagt, dass jede Woche eine vollständige Sicherung ausgelöst wird. Die Sicherungen erreichen den Tresor, in dem sie drei Monate lang gespeichert sind.

Wenn Sie der Richtlinie die Archivebene hinzufügen möchten, müssen Sie entscheiden, wann die Daten aus dem Tresor in das Archiv verschoben werden, wie lange die Daten im Archiv verbleiben und welche der geplanten Sicherungen als archivierbar markiert werden sollen. Sie müssen eine Aufbewahrungsregel hinzufügen, die den Lebenszyklus der Sicherungsdaten aus dem Tresordatenspeicher zum Archivdatenspeicher definiert. Die Aufbewahrungsregel definiert auch, wie lange die Sicherungsdaten im Archivdatenspeicher verbleiben. Anschließend müssen Sie ein Tag hinzufügen, das die geplanten Sicherungen als geeignet kennzeichnet, um archiviert zu werden.

Das resultierende PowerShell-Objekt sieht wie folgt aus:

  • Richtlinienregel
    • Sicherungsregel
      • Sicherungsparameter
        • Sicherungstyp (eine vollständige Datenbanksicherung in diesem Fall)
        • Anfänglicher Datenspeicher (wo die Sicherungen anfänglich landen)
        • Trigger (wie die Sicherung ausgelöst wird)
          • Zeitplan
          • Standardmarkierungskriterien (ein Standard-Tag, das alle geplanten Sicherungen mit der Aufbewahrungsregel verbindet)
          • Neue Etikettierungskriterien für die neue Aufbewahrungsregel mit demselben Namen
    • Standardaufbewahrungsregel (eine Regel, die standardmäßig auf alle Sicherungen angewendet wird, im ursprünglichen Datenspeicher)
    • Neue Aufbewahrungsregel
      • Lebenszyklus
        • Quelldatenspeicher
        • Zeitraum für das Löschen im Quelldatenspeicher
        • In den Zieldatenspeicher kopieren

Abrufen der Richtlinienvorlage

Um die inneren Komponenten einer Sicherungsrichtlinie für die PostgreSQL-Datenbanksicherung zu verstehen, rufen Sie die Richtlinienvorlage mithilfe des az dataprotection backup-policy get-default-policy-template Befehls ab. Dieser Befehl gibt die Standardrichtlinienvorlage für einen Datenquellentyp 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 einen Lebenszyklus (der entscheidet, wann die Sicherung gelöscht, kopiert oder verschoben werden soll). In einer PostgreSQL-Datenbanksicherung ist der Standardwert für den Trigger ein geplanter wöchentlicher Trigger (eine Sicherung alle sieben Tage). Jede Sicherung wird für drei Monate aufbewahrt.

Geplanter Trigger

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

Standardlebenszyklus für die Aufbewahrungsregel

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

Ändern der Richtlinienvorlage

In Azure PowerShell können Sie Objekte als Stagingspeicherorte verwenden, um alle Änderungen auszuführen. In der Azure CLI müssen Sie Dateien verwenden, da es keine Vorstellung von Objekten gibt. Jeder Bearbeitungsvorgang sollte an eine neue Datei umgeleitet werden, in der Inhalt aus der Eingabedatei gelesen und an die Ausgabedatei umgeleitet wird. Sie können die Datei später nach Bedarf umbenennen, während 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. Verwenden Sie den az dataprotection backup-policy trigger set Befehl, um den Zeitplan zu ändern.

Im folgenden Beispiel wird die wöchentliche Sicherung so geändert, dass sie jeden Sonntag, Mittwoch und Freitag jeder Woche durchgeführt wird. 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 lautet 1 also, und der Intervalltyp lautet 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

Hinzufügen einer neuen Aufbewahrungsregel

Wenn Sie den Archivschutz hinzufügen möchten, müssen Sie die Richtlinienvorlage ändern.

Die Standardvorlage verfügt über 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 definiert, wann die Daten in den Archivdatenspeicher verschoben werden. Das heißt, Sicherungsdaten werden zuerst in den Archivdatenspeicher kopiert und dann im Tresordatenspeicher gelöscht.

Außerdem sollte die Regel definieren, wie lange die Daten im Archivdatenspeicher aufbewahrt werden sollen. Verwenden Sie den az dataprotection backup-policy retention-rule create-lifecycle Befehl, um neue Lebenszyklen zu erstellen. Verwenden Sie den az dataprotection backup-policy retention-rule set Befehl, um diese Lebenszyklen neuen oder vorhandenen Regeln zuzuordnen.

Im folgenden Beispiel wird eine neue Aufbewahrungsregel mit dem Namen Monthlyerstellt. In dieser Regel wird die erste erfolgreiche Sicherung jedes Monats für sechs Monate im Tresor aufbewahrt, in die Archivebene verschoben und 24 Monate lang in der Archivebene aufbewahrt.

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

Nachdem Sie eine Aufbewahrungsregel erstellt haben, müssen Sie eine entsprechende Markierung in der Trigger-Eigenschaft der Sicherungsrichtlinie erstellen. Verwenden Sie den az dataprotection backup-policy tag create-absolute-criteria Befehl, um neue Taggingkriterien zu erstellen. Verwenden Sie den az dataprotection backup-policy tag set Befehl, um das vorhandene Tag zu aktualisieren oder ein neues Tag zu erstellen.

Im folgenden Beispiel wird ein neues Tag zusammen mit den Kriterien erstellt. Hierbei handelt es sich um die erste erfolgreiche Sicherung des Monats. Das Tag hat denselben Namen wie die entsprechende anzuwendende Aufbewahrungsregel.

In diesem Beispiel werden die Kriterien für die Tags als Monthly benannt.

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

Wenn der Zeitplan mehrere Sicherungen pro Woche (jeden Sonntag, Mittwoch und Donnerstag, wie im vorherigen Beispiel angegeben) ist und Sie die Sicherungen für Sonntag und Freitag archivieren möchten, können Sie die Taggingkriterien mithilfe des az dataprotection backup-policy tag create-generic-criteria Befehls ändern:

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

Nachdem Sie die Vorlage entsprechend den Anforderungen geändert haben, verwenden Sie den az dataprotection backup-policy create Befehl, um eine Richtlinie mithilfe 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

Nachdem Sie den Tresor und die Richtlinie erstellt haben, müssen Sie drei wichtige Punkte berücksichtigen, um eine PostgreSQL-Datenbank in Azure Database for PostgreSQL zu sichern.

Wichtige Entitäten verstehen

PostgreSQL-Datenbank, die gesichert werden soll

Rufen Sie die Ressource-Manager-ID der PostgreSQL-Datenbank ab, die gesichert werden soll. Diese ID dient als Bezeichner der Datenbank. Im nachfolgenden Beispiel wird eine Datenbank namens empdb11 unter dem PostgreSQL-Server testposgresql verwendet, die in der Ressourcengruppe ossrg unter einem anderen Abonnement vorhanden ist. Im Beispiel wird Bash verwendet.

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

Key Vault (Schlüsseltresor)

Der Azure Backup-Dienst speichert den Benutzernamen und das Kennwort für die Verbindung mit der PostgreSQL-Datenbank nicht. Stattdessen speist die für Sicherungsadministration zuständige Person die Schlüssel in den Schlüsseltresor ein. Der Azure Backup-Dienst greift dann auf den Schlüsseltresor zu, liest die Schlüssel und greift auf die Datenbank zu.

Im folgenden Beispiel wird Bash verwendet. Notieren Sie den geheimen Bezeichner des relevanten Schlüssels.

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

Sicherungstresor

Ein Sicherungstresor muss eine Verbindung mit dem PostgreSQL-Server herstellen und dann über die im Schlüsseltresor vorhandenen Schlüssel auf die Datenbank zugreifen. Der Sicherungstresor erfordert also Zugriff auf den PostgreSQL-Server und den Schlüsseltresor. Der verwalteten Identität des Sicherungstresors wird Zugriff gewährt.

Erfahren Sie mehr über die Berechtigungen, die Sie der verwalteten Identität des Sicherungstresors für den PostgreSQL-Server und den Schlüsseltresor erteilen sollten, in dem die Schlüssel der Datenbank gespeichert sind.

Vorbereiten der Anforderung

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

  1. Bereiten Sie die Anforderung mithilfe der relevanten Tresor-, Richtlinien- und PostgreSQL-Datenbank im az dataprotection backup-instance initialize Befehl vor.
  2. Senden Sie die Anforderung, um die Datenbank mithilfe des az dataprotection backup-instance create Befehls zu sichern.
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

Eine Sicherung auf Abruf ausführen

Sie müssen eine Aufbewahrungsregel angeben, während Sie die Sicherung auslösen. Um die Aufbewahrungsregeln in einer Richtlinie anzuzeigen, durchsuchen Sie die JSON-Richtliniendatei. Im folgenden Beispiel gibt es zwei Aufbewahrungsregeln mit den Namen Default und Monthly. In diesem Artikel wird die Monthly Regel für die On-Demand-Sicherung verwendet.

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 az dataprotection backup-instance adhoc-backup Befehl, um eine On-Demand-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 az dataprotection job list Befehls. 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 aus den verschiedenen Sicherungstresoren abzurufen:

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