Freigeben über


Erstellen von Sicherungsrichtlinien für PostgreSQL-Datenbanken mithilfe der REST-API für Datenschutz

Eine Sicherungsrichtlinie steuert die Aufbewahrung und den Zeitplan Ihrer PostgreSQL-Datenbanksicherungen in Azure Database for PostgreSQL. Azure Database for PostgreSQL bietet langfristige Aufbewahrung von Datenbanksicherungen und unterstützt eine Sicherung pro Tag.

Sie können eine vorhandene Sicherungsrichtlinie wiederverwenden, um Sicherungen für PostgreSQL-Datenbanken in einem Tresor zu konfigurieren, oder Sie können eine Sicherungsrichtlinie für einen Azure Recovery Services-Tresor mithilfe der Data Protection REST-API für Azure Backup erstellen. In diesem Artikel erstellen Sie eine Sicherungsrichtlinie.

Grundlegendes zu PostgreSQL-Sicherungsrichtlinien

Während die Datenträgersicherung mehrere Sicherungen pro Tag und 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
          • Standardmarkierungskriterien (ein Standardtag, das 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 berechtigt kennzeichnet, 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 Standardtag, das alle geplanten Sicherungen mit der Aufbewahrungsregel verknüpft)
          • Neue Kategorisierungskriterien 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

Erstellen einer Richtlinie

Wichtig

Derzeit wird das Aktualisieren oder Ändern einer vorhandenen Richtlinie nicht unterstützt. Erstellen Sie stattdessen eine neue Richtlinie mit den erforderlichen Details, und weisen Sie sie der relevanten Sicherungsinstanz zu.

Verwenden Sie den folgenden PUT Vorgang, um eine Sicherungsrichtlinie zu erstellen:

PUT https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{policyName}?api-version=2021-01-01

Der URI stellt die und {vaultName} die {policyName} Werte bereit. Der Anforderungstext enthält zusätzliche Informationen.

Erstellen des Anforderungstexts

Um eine Richtlinie für die PostgreSQL-Sicherung zu erstellen, benötigt der Anforderungstext die folgenden Komponenten:

Name Erforderlich Typ BESCHREIBUNG
properties true BaseBackupPolicy: BackupPolicy BaseBackupPolicyResource-Eigenschaften

Die vollständige Liste der Definitionen im Anforderungstext finden Sie in den REST-API-Sicherungsrichtlinien.

Beispiel für Anforderungstext

Die Richtlinie besagt Folgendes:

  • Der Trigger wird für eine wöchentliche Sicherung zur gewählten Startzeit (Zeit + P1W) geplant.
  • Der Datenspeicher ist ein Tresorspeicher, da die Sicherungen direkt in den Tresor übertragen werden.
  • Die Sicherungen werden drei Monate lang im Tresor aufbewahrt (P3M).
{
  "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"
    }
  ]
}

Wichtig

Die Zeitformate unterstützen nur DateTime. Time wird nicht unterstützt. Die Uhrzeit des Tages gibt die Startzeit der Sicherung an, nicht die Endzeit.

Lassen Sie uns den vorherigen JSON-Code mit zwei Änderungen aktualisieren:

  • Fügen Sie Sicherungen an mehreren Tagen der Woche hinzu.
  • Fügen Sie einen Archivdatenspeicher für die langfristige Aufbewahrung von PostgreSQL-Datenbanksicherungen hinzu.

Im folgenden Beispiel wird die wöchentliche Sicherung auf Sonntag, Mittwoch und Freitag jeder Woche geändert. Das Zeitplandatumsarray erwähnt die Datumsangaben, und die Wochentage für diese 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.

Geplanter Trigger

"trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "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"
          ],
          "timeZone": "UTC"
        }

Wenn Sie den Archivschutz hinzufügen möchten, müssen Sie den Richtlinien-JSON-Code ändern.

Lebenszyklus der Aufbewahrung

Der vorherige JSON-Code 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 gelöscht werden. 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 die Dauer definieren, um die Daten im Archivdatenspeicher beizubehalten. Nennen wir diese neue Regel Monthly. Es definiert, dass Sicherungen für 6 Monate im Tresordatenspeicher aufbewahrt und dann in den Archivdatenspeicher kopiert werden sollen. Löschen Sie dann die Sicherungen im Tresordatenspeicher, und bewahren Sie die Daten 24 Monate im Archivdatenspeicher auf. Löschen Sie schließlich die Daten im Archivdatenspeicher.

"lifecycles": [
        {
          "deleteAfter": {
            "duration": "P3M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": []
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    },
    {
      "isDefault": false,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P6M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": {
            "copyAfter": {
              "objectType": "CopyOnExpiryOption"
            },
            "dataStore": {
              "dataStoreType": "ArchiveStore",
              "objectType": "DataStoreInfoBase"
            }
          }
        },
        {
          "deleteAfter": {
            "duration": "P24M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "ArchiveStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": null
        }
      ],
      "name": "Monthly",
      "objectType": "AzureRetentionRule"
    }

Kategorisierungskriterien

Jedes Mal, wenn Sie eine Aufbewahrungsregel hinzufügen, müssen Sie ein entsprechendes Tag in der Trigger Eigenschaft der Richtlinie hinzufügen. Im folgenden Beispiel wird ein neues Tag zusammen mit den Kriterien (bei denen es sich um die erste erfolgreiche Sicherung des Monats handelt) mit exakt demselben Namen wie die entsprechende Aufbewahrungsregel erstellt, die angewendet werden soll.

In diesem Beispiel sollten die Tagkriterien benannt Monthlywerden:

{
  "criteria": [
    {
      "absoluteCriteria": [
        "FirstOfMonth"
      ],
      "objectType": "ScheduleBasedBackupCriteria"
    }
  ],
  "isDefault": false,
  "tagInfo": {
    "tagName": "Monthly"
  },
  "taggingPriority": 15
}

Nachdem Sie alle Änderungen eingeschlossen haben, wird der JSON-Code der Richtlinie wie folgt angezeigt:

{
  "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-15T22:00:00+00:00/P1W",
            "R/2021-08-18T22:00:00+00:00/P1W",
            "R/2021-08-20T22:00:00+00:00/P1W"
          ],
          "timeZone": "UTC"
        },
        "taggingCriteria": [
          {
            "isDefault": true,
            "tagInfo": {
              "id": "Default_",
              "tagName": "Default"
            },
            "taggingPriority": 99
          },
          {
            "criteria": [
              {
                "absoluteCriteria": [
                  "FirstOfMonth"
                ],
                "objectType": "ScheduleBasedBackupCriteria"
              }
            ],
            "isDefault": false,
            "tagInfo": {
              "tagName": "Monthly"
            },
            "taggingPriority": 15
          }
        ]
      }
    },
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P3M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": []
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    },
    {
      "isDefault": false,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P6M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": {
            "copyAfter": {
              "objectType": "CopyOnExpiryOption"
            },
            "dataStore": {
              "dataStoreType": "ArchiveStore",
              "objectType": "DataStoreInfoBase"
            }
          }
        },
        {
          "deleteAfter": {
            "duration": "P24M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "ArchiveStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": null
        }
      ],
      "name": "Monthly",
      "objectType": "AzureRetentionRule"
    }
  ]
}

Weitere Informationen zur Richtlinienerstellung finden Sie unter Erstellen einer Sicherungsrichtlinie.

Überprüfen der Antwort

Die Erstellung oder Aktualisierung der Sicherungsrichtlinie ist ein synchroner Vorgang. Nachdem der Vorgang erfolgreich war, wird die folgende Statusantwort mit dem Richtlinieninhalt im Antworttext zurückgegeben.

Name Typ BESCHREIBUNG
200 OK BaseBackupPolicyResource Der Vorgang wird abgeschlossen.

Beispielantwort

{
    "properties": {
        "policyRules": [
            {
                "backupParameters": {
                    "backupType": "Full",
                    "objectType": "AzureBackupParams"
                },
                "trigger": {
                    "schedule": {
                        "repeatingTimeIntervals": [
                            "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"
                        ],
                        "timeZone": "UTC"
                    },
                    "taggingCriteria": [
                        {
                            "tagInfo": {
                                "tagName": "Monthly",
                                "id": "Monthly_"
                            },
                            "taggingPriority": 15,
                            "isDefault": false,
                            "criteria": [
                                {
                                    "absoluteCriteria": [
                                        "FirstOfMonth"
                                    ],
                                    "objectType": "ScheduleBasedBackupCriteria"
                                }
                            ]
                        },
                        {
                            "tagInfo": {
                                "tagName": "Default",
                                "id": "Default_"
                            },
                            "taggingPriority": 99,
                            "isDefault": true
                        }
                    ],
                    "objectType": "ScheduleBasedTriggerContext"
                },
                "dataStore": {
                    "dataStoreType": "VaultStore",
                    "objectType": "DataStoreInfoBase"
                },
                "name": "BackupWeekly",
                "objectType": "AzureBackupRule"
            },
            {
                "lifecycles": [
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P6M"
                        },
                        "targetDataStoreCopySettings": [
                            {
                                "dataStore": {
                                    "dataStoreType": "ArchiveStore",
                                    "objectType": "DataStoreInfoBase"
                                },
                                "copyAfter": {
                                    "objectType": "CopyOnExpiryOption"
                                }
                            }
                        ],
                        "sourceDataStore": {
                            "dataStoreType": "VaultStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    },
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P24M"
                        },
                        "targetDataStoreCopySettings": [],
                        "sourceDataStore": {
                            "dataStoreType": "ArchiveStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    }
                ],
                "isDefault": false,
                "name": "Monthly",
                "objectType": "AzureRetentionRule"
            },
            {
                "lifecycles": [
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P3M"
                        },
                        "targetDataStoreCopySettings": [],
                        "sourceDataStore": {
                            "dataStoreType": "VaultStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    }
                ],
                "isDefault": true,
                "name": "Default",
                "objectType": "AzureRetentionRule"
            }
        ],
        "datasourceTypes": [
            "Microsoft.DBforPostgreSQL/servers/databases"
        ],
        "objectType": "BackupPolicy"
    },
    "id": "/subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/DebRG1/providers/Microsoft.DataProtection/backupVaults/DebBackupVault/backupPolicies/OssPolicy1",
    "name": "OssPolicy1",
    "type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}