Megosztás a következőn keresztül:


Biztonsági mentési szabályzatok létrehozása PostgreSQL-adatbázisokhoz a Data Protection REST API használatával

A biztonsági mentési szabályzat szabályozza a PostgreSQL-adatbázis biztonsági mentéseinek megőrzését és ütemezését az Azure Database for PostgreSQL-ben. Az Azure Database for PostgreSQL hosszú távú adatmegőrzést biztosít az adatbázis biztonsági másolataihoz, és támogatja a napi biztonsági mentést.

Egy meglévő biztonsági mentési szabályzatot újra felhasználhat a PostgreSQL-adatbázisok biztonsági mentéseinek tárolóba való konfigurálásához, vagy létrehozhat egy biztonsági mentési szabályzatot egy Azure Recovery Services-tárolóhoz az Azure Backuphoz készült Data Protection REST API használatával. Ebben a cikkben biztonsági mentési szabályzatot hoz létre.

A PostgreSQL biztonsági mentési szabályzatai

Míg a lemezes biztonsági mentés naponta több biztonsági mentést is biztosít, a blobok biztonsági mentése pedig folyamatos biztonsági mentés eseményindító nélkül, a PostgreSQL biztonsági mentése archív védelmet nyújt. Az elsőként a tárolóba küldött biztonsági mentési adatok egy meghatározott szabály vagy életciklus alapján áthelyezhetők az archív szintre.

Ebben a kontextusban a következő hierarchia segíthet megérteni a PostgreSQL biztonsági mentési házirend-objektumát:

  • Szabályzatszabály
    • Biztonsági mentési szabály
      • Biztonsági mentési paraméter
        • Biztonsági mentés típusa (ebben az esetben teljes adatbázis biztonsági mentése)
        • Kezdeti adattár (ahol a biztonsági másolatok eredetileg érkeznek)
        • Eseményindító (a biztonsági mentés aktiválása)
          • Időbeosztás
          • Alapértelmezett címkézési feltételek (alapértelmezett címke, amely az összes ütemezett biztonsági mentést az adatmegőrzési szabályhoz kapcsolja)
    • Alapértelmezett adatmegőrzési szabály (a kezdeti adattárban alapértelmezés szerint az összes biztonsági mentésre alkalmazott szabály)

A szabályzatobjektum határozza meg, hogy milyen típusú biztonsági mentések aktiválódnak, hogyan aktiválódnak (ütemezés szerint), mivel vannak megjelölve, hová kerülnek (adattár), és hogy milyen életciklussal rendelkeznek adataik egy adattárban.

A PostgreSQL alapértelmezett PowerShell-objektuma azt mondja, hogy minden héten teljes biztonsági mentést kell indítania. A biztonsági másolatok elérik a tárolót, ahol három hónapig vannak tárolva.

Ha hozzá szeretné adni az archív szintet a szabályzathoz, el kell döntenie, hogy mikor kerülnek át az adatok a tárolóból az archívumba, mennyi ideig maradnak az adatok az archívumban, és hogy az ütemezett biztonsági másolatok közül melyik legyen archiválható. Hozzá kell adnia egy adatmegőrzési szabályt, amely meghatározza a tárolóadatbankból származó biztonsági mentési adatok életciklusát az archív adatbankban. Az adatmegőrzési szabály azt is meghatározza, hogy a biztonsági mentési adatok mennyi ideig maradnak az archív adattárban. Ezután fel kell vennie egy címkét, amely az ütemezett biztonsági másolatokat archiválásra jogosultként jelöli meg.

A létrejött PowerShell objektum a következő:

  • Szabályzatszabály
    • Biztonsági mentési szabály
      • Biztonsági mentési paraméter
        • Biztonsági mentés típusa (ebben az esetben teljes adatbázis biztonsági mentése)
        • Kezdeti adattár (ahol a biztonsági másolatok kezdetben helyet kapnak)
        • Eseményindító (a biztonsági mentés aktiválása)
          • Időbeosztás
          • Alapértelmezett címkézési feltételek (alapértelmezett címke, amely az összes ütemezett biztonsági mentést az adatmegőrzési szabályhoz kapcsolja)
          • Új címkézési feltételek az azonos nevű új adatmegőrzési szabályhoz
    • Alapértelmezett adatmegőrzési szabály (a kezdeti adattárban alapértelmezés szerint az összes biztonsági mentésre alkalmazott szabály)
    • Új adatmegőrzési szabály
      • Életciklus
        • Forrás adattár
        • A forrásadattárban történő törlés időtartama
        • Másolás a céladattárba

Hozzon létre egy irányelvet.

Important

Jelenleg egy meglévő irányelv frissítése vagy módosítása nem támogatott. Ehelyett hozzon létre egy új szabályzatot a szükséges részletekkel, és rendelje hozzá a megfelelő biztonsági mentési példányhoz.

Biztonsági mentési szabályzat létrehozásához használja a következő PUT műveletet:

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

Az URI biztosítja a {policyName} és {vaultName} értékeket. A kérelem törzse további információkat tartalmaz.

Hozd létre a kérés törzsét

A PostgreSQL biztonsági mentési szabályzatának létrehozásához a kérelem törzsének a következő összetevőkre van szüksége:

Name Kötelező Típus Leírás
properties true BaseBackupPolicy: BackupPolicy BaseBackupPolicyResource tulajdonságok

A kérelem törzsében található definíciók teljes listájáért tekintse meg a REST API biztonsági mentési szabályzatait.

Példakérés törzse

A szabályzat azt mondja:

  • Az eseményindító heti biztonsági mentésre van ütemezve a kiválasztott kezdési időpontban (idő + P1W).
  • Az adattár egy archívumtároló, mert a biztonsági másolatok közvetlenül az archívumba kerülnek.
  • A biztonsági másolatok három hónapig (P3M) megmaradnak a tárolóban.
{
  "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"
    }
  ]
}

Important

Az időformátumok csak DateTime támogatják. Time nem támogatott. A nap időpontja a biztonsági mentés kezdési idejét jelzi, nem pedig a befejezési időpontot.

Frissítse az előző JSON-t két módosítással:

  • Készítsen biztonsági másolatot a hét több napján.
  • Adjon hozzá egy archív adattárat a PostgreSQL-adatbázisok biztonsági mentéseinek hosszú távú megőrzéséhez.

Az alábbi példa a heti biztonsági mentést minden hét vasárnapjára, szerdára és péntekére módosítja. Az ütemezési dátumtömb a dátumokat említi, és az adott dátumok hét napjait a hét napjainak tekinti. Azt is meg kell adnia, hogy ezek az ütemezések hetente ismétlődjenek. Tehát az ütemezési időköz 1 és az intervallum típusa Weekly.

Ütemezett eseményindító

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

Ha hozzá szeretné adni az archív védelmet, módosítania kell a szabályzat JSON-t.

Megőrzési életciklus

Az előző JSON az alapértelmezett adatmegőrzési szabály szerinti kezdeti adattár életciklusával rendelkezik. Ebben a helyzetben a szabály azt mondja, hogy három hónap után töröljük a biztonsági mentési adatokat. Adjon hozzá egy új adatmegőrzési szabályt, amely meghatározza, hogy az adatok mikor kerülnek át az archív adattárba. Vagyis a biztonsági mentési adatok először az archív adattárba lesznek másolva, majd törlődnek a tárolóadattárból.

Emellett a szabálynak meg kell határoznia azokat az időtartamokat is, amelyekkel az adatok megmaradnak az archív adattárban. Nevezzük el ezt az új szabályt Monthly. Meghatározza, hogy a biztonsági másolatokat 6 hónapig meg kell őrizni a tárolóadattárban, majd át kell másolni az archív adattárba. Ezután törölje a tárolóadattárban lévő biztonsági másolatokat, és őrizze meg az adatokat 24 hónapig az archív adattárban. Végül törölje az adatokat az archív adattárból.

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

Címkézési feltételek

Minden alkalommal, amikor megőrzési szabályt ad hozzá, hozzá kell adnia egy megfelelő címkét a Trigger szabályzat tulajdonságához. Az alábbi példa egy új címkét hoz létre, a kritériumokkal (amely a hónap első sikeres biztonsági mentése), pontosan ugyanazzal a névvel, mint a megfelelően alkalmazandó megőrzési szabály.

Ebben a példában a címkefeltételnek a következő nevet kell adni Monthly:

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

Az összes módosítás belefoglalása után a szabályzat JSON-ja a következőképpen jelenik meg:

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

A szabályzatok létrehozásával kapcsolatos további részletekért lásd : Biztonsági mentési szabályzat létrehozása.

A válasz ellenőrzése

A biztonsági mentési szabályzat létrehozása vagy frissítése szinkron művelet. A művelet sikeres végrehajtása után a következő állapotválaszt adja vissza a válasz törzsében található szabályzattartalommal.

Name Típus Leírás
200 OK BaseBackupPolicyResource A művelet befejeződött.

Példa válasz

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