Delen via


Back-upbeleid maken voor PostgreSQL-databases met behulp van de Data Protection REST API

Een back-upbeleid bepaalt de retentie en planning van uw PostgreSQL-databaseback-ups in Azure Database for PostgreSQL. Azure Database for PostgreSQL biedt langetermijnretentie van databaseback-ups en ondersteunt een back-up per dag.

U kunt een bestaand back-upbeleid opnieuw gebruiken om back-ups voor PostgreSQL-databases te configureren in een kluis of u kunt een back-upbeleid maken voor een Azure Recovery Services-kluis met behulp van de Data Protection REST API voor Azure Backup. In dit artikel maakt u een back-upbeleid.

Meer informatie over back-upbeleid van PostgreSQL

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 worden verzonden, kunnen worden verplaatst naar de archieflaag volgens een gedefinieerde regel of een levenscyclus.

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

  • Beleidsregel
    • Back-upregel
      • Back-upparameter
        • Back-uptype (in dit geval een volledige databaseback-up)
        • Eerste gegevensarchief (waarbij de back-ups in eerste instantie terechtkomen)
        • Trigger (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 uit het kluisgegevensarchief wordt gedefinieerd in het archiefgegevensarchief. 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
    • Back-upregel
      • Back-upparameter
        • Back-uptype (in dit geval een volledige databaseback-up)
        • Eerste gegevensarchief (waarbij de back-ups in eerste instantie terechtkomen)
        • Trigger (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

Een beleid maken

Belangrijk

Op dit moment wordt het bijwerken of wijzigen van een bestaand beleid niet ondersteund. Maak in plaats daarvan een nieuw beleid met de vereiste details en wijs dit toe aan het relevante back-upexemplaren.

Gebruik de volgende PUT bewerking om een back-upbeleid te maken:

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

De URI biedt de {policyName} en {vaultName} waarden. De hoofdtekst van de aanvraag biedt aanvullende informatie.

De hoofdtekst van de aanvraag maken

Voor het maken van een beleid voor PostgreSQL-back-up heeft de aanvraagbody de volgende onderdelen nodig:

Naam Vereist Type Beschrijving
properties true BaseBackupPolicy: BackupPolicy BaseBackupPolicyResource eigenschappen

Zie de REST API-back-upbeleidsregels voor de volledige lijst met definities in de aanvraagbody.

Voorbeeld van aanvraaginhoud

Het beleid zegt:

  • De trigger wordt gepland voor een wekelijkse back-up op de gekozen begintijd (tijd + P1W).
  • Het gegevensarchief is een kluisarchief, omdat de back-ups rechtstreeks naar de kluis worden overgebracht.
  • De back-ups worden gedurende drie maanden (P3M) in de kluis bewaard.
{
  "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"
    }
  ]
}

Belangrijk

De tijdnotaties ondersteunen alleen DateTime. Time wordt niet ondersteund. De tijd van de dag geeft de begintijd van de back-up aan, niet de eindtijd.

We gaan de voorgaande JSON bijwerken met twee wijzigingen:

  • Voeg back-ups toe op meerdere dagen van de week.
  • Voeg een archiefgegevensarchief toe voor langetermijnretentie van PostgreSQL-databaseback-ups.

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.

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

Als u de archiefbeveiliging wilt toevoegen, moet u de JSON van het beleid wijzigen.

Levenscyclus van retentie

De voorgaande JSON 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: back-upgegevens worden eerst gekopieerd naar het archiefgegevensarchief en vervolgens verwijderd in het gegevensarchief van de kluis.

Bovendien moet de regel de duur definiëren om de gegevens in het archiefgegevensarchief te bewaren. Laten we deze nieuwe regel Monthlyeen naam opgeven. Hiermee wordt gedefinieerd dat back-ups gedurende 6 maanden in het gegevensarchief van de kluis moeten worden bewaard en vervolgens moeten worden gekopieerd naar het archiefgegevensarchief. Verwijder vervolgens de back-ups in het kluisgegevensarchief en bewaar de gegevens gedurende 24 maanden in het archiefgegevensarchief. Verwijder ten slotte de gegevens in het archiefgegevensarchief.

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

Criteria voor taggen

Telkens wanneer u een bewaarregel toevoegt, moet u een bijbehorende tag toevoegen aan de Trigger eigenschap van het beleid. In het volgende voorbeeld wordt een nieuwe tag gemaakt, samen met de criteria (de eerste geslaagde back-up van de maand) met exact dezelfde naam als de bijbehorende bewaarregel die moet worden toegepast.

In dit voorbeeld moeten de tagcriteria de naam Monthlyhebben:

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

Nadat u alle wijzigingen hebt opgenomen, wordt de JSON van het beleid als volgt weergegeven:

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

Zie Een back-upbeleid maken voor meer informatie over het maken van beleid.

Het antwoord controleren

Het maken of bijwerken van het back-upbeleid is een synchrone bewerking. Nadat de bewerking is geslaagd, wordt het volgende statusantwoord geretourneerd met de beleidsinhoud in de hoofdtekst van het antwoord.

Naam Type Beschrijving
200 OK BaseBackupPolicyResource De bewerking is voltooid.

Voorbeeldantwoord

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