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


PostgreSQL-adatbázisok biztonsági mentése az Azure CLI használatával

Ez a cikk azt ismerteti, hogyan készíthet biztonsági másolatot a PostgreSQL-adatbázisokról az Azure Virtual Machinesben az Azure CLI használatával. A biztonsági mentést az Azure Portal, az Azure PowerShell és a REST API for PostgreSQL-adatbázisok használatával is konfigurálhatja.

További információ a támogatott forgatókönyvekről és az Azure Database for PostgreSQL biztonsági mentésével kapcsolatos gyakori kérdésekről .

Backup-tároló létrehozása

A Backup-tároló egy azure-beli tároló entitás. Tárolja a biztonsági mentési adatokat az Azure Backup által támogatott új számítási feladatokhoz, például az Azure Database for PostgreSQL-kiszolgálókhoz, a tárfiókban lévő blobokhoz és az Azure-lemezekhez. A biztonsági mentési tárolók segítenek a biztonsági mentési adatok rendszerezésében, miközben minimalizálják a felügyeleti többletterhelést. A biztonsági mentési tárolók az Azure Azure Resource Manager-modelljén alapulnak, amely továbbfejlesztett képességeket biztosít a biztonsági mentési adatok védelméhez.

A Backup-tároló létrehozása előtt válassza ki a tárolón belüli adatok tárolóredundanciát. Ezután hozza létre a biztonsági másolat tárolót a megadott tárredundanciával és helyszínen.

Ebben a cikkben létrehoz egy biztonsági mentési tárolót a TestBkpVault régióban, az westus erőforráscsoport alatt, a testBkpVaultRG nevű. az dataprotection vault create A paranccsal hozzon létre egy Backup-tárolót. További információ a Backup-tárolók létrehozásáról.

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

Hozzon létre egy biztonsági mentési szabályzatot

A tároló létrehozása után létrehozhat egy biztonsági mentési szabályzatot a PostgreSQL-adatbázisok védelméhez. A REST API használatával a PostgreSQL-adatbázisokhoz biztonsági mentési szabályzatot is létrehozhat.

A PostgreSQL biztonsági mentési szabályzatának ismertetése

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 kezdetben kerülnek)
        • 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óadattárban lévő biztonsági mentési adatok életciklusát az archív adattárban. 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.

Az eredményül kapott 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 kerülnek)
        • 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ásadattár
        • A forrásadattárban történő törlés időtartama
        • Másolás a céladattárba

A szabályzatsablon lekérése

A PostgreSQL-adatbázis biztonsági mentési szabályzatának belső összetevőinek megismeréséhez kérje le a szabályzatsablont a az dataprotection backup-policy get-default-policy-template parancs használatával. Ez a parancs egy adatforrástípus alapértelmezett szabályzatsablonjának visszaadása. Ezzel a szabályzatsablonnal új szabályzatot hozhat létre.

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

A szabályzatsablon egy eseményindítóból (amely dönti el, hogy mi aktiválja a biztonsági mentést) és egy életciklusból (amely dönti el, hogy mikor törli, másolja vagy helyezze át a biztonsági mentést). A PostgreSQL-adatbázisok biztonsági mentésében az eseményindító alapértelmezett értéke egy ütemezett heti eseményindító (hét naponta egy biztonsági mentés). Minden biztonsági mentést három hónapig őrizünk meg.

Ütemezett eseményindító

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

A fogva tartási szabály alapértelmezett életciklusa

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

A szabályzatsablon módosítása

Az Azure PowerShellben az objektumokat átmeneti helyként használhatja az összes módosítás végrehajtásához. Az Azure CLI-ben fájlokat kell használnia, mert az objektumok fogalma nem létezik. Minden szerkesztési műveletet át kell irányítani egy új fájlba, ahol a rendszer beolvassa a tartalmat a bemeneti fájlból, és átirányítja a kimeneti fájlba. Később szükség szerint átnevezheti a fájlt, miközben szkriptben használja.

Az ütemezés módosítása

Az alapértelmezett szabályzatsablon hetente egyszer nyújt biztonsági másolatot. Módosíthatja a biztonsági mentés ütemezését úgy, hogy hetente több napig történjen. Az ütemezés módosításához használja a az dataprotection backup-policy trigger set parancsot.

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átum tömb megemlíti a dátumokat, és ezeknek a dátumoknak a hét napjait úgy veszi figyelembe, mint a hét napjai. 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.

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

Új adatmegőrzési szabály hozzáadása

Ha archív védelmet szeretne hozzáadni, módosítania kell a szabályzatsablont.

Az alapértelmezett sablon életciklussal rendelkezik a kezdeti adattárhoz az alapértelmezett adatmegőrzési szabály szerint. Ebben a forgatókönyvben a szabály azt mondja, hogy három hónap után törölje 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árban.

A szabálynak azt is meg kell határoznia, hogy mennyi ideig őrizze meg az adatokat az archív adattárban. Új életciklusok létrehozásához használja a az dataprotection backup-policy retention-rule create-lifecycle parancsot. Ha ezeket az életciklusokat új vagy meglévő szabályokhoz szeretné társítani, használja a az dataprotection backup-policy retention-rule set parancsot.

Az alábbi példa egy új adatmegőrzési szabályt hoz létre.Monthly Ebben a szabályban minden hónap első sikeres biztonsági mentése hat hónapig megmarad a tárolóban, átkerül az archív szintre, és 24 hónapig az archív szinten marad.

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

Címke és a vonatkozó feltételek hozzáadása

Miután létrehozott egy adatmegőrzési szabályt, létre kell hoznia egy megfelelő címkét a Trigger biztonsági mentési szabályzat tulajdonságában. Új címkézési feltételek létrehozásához használja a az dataprotection backup-policy tag create-absolute-criteria parancsot. A meglévő címke frissítéséhez vagy új címke létrehozásához használja a az dataprotection backup-policy tag set parancsot.

Az alábbi példa egy új címkét hoz létre a feltételekkel együtt, amely a hónap első sikeres biztonsági mentése. A címke neve megegyezik az alkalmazandó megőrzési szabály nevével.

Ebben a példában a címkefeltételek neve Monthly:

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

Ha az ütemezés hetente több biztonsági mentést tartalmaz (minden vasárnap, szerdán és csütörtökön, az előző példában megadottak szerint), és archiválni szeretné a vasárnapi és a pénteki biztonsági mentéseket, a következő paranccsal módosíthatja a az dataprotection backup-policy tag create-generic-criteria címkézési feltételeket:

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

Új PostgreSQL biztonsági mentési szabályzat létrehozása

Miután módosította a sablont a követelményeknek megfelelően, a az dataprotection backup-policy create parancs használatával hozzon létre egy szabályzatot a módosított sablon használatával:

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

Biztonsági mentés konfigurálása

A tároló és a szabályzat létrehozása után három kritikus szempontot kell figyelembe vennie egy PostgreSQL-adatbázis biztonsági mentéséhez az Azure Database for PostgreSQL-ben.

A legfontosabb entitások ismertetése

PostgreSQL-adatbázis biztonsági mentése

Kérje le a PostgreSQL-adatbázis Resource Manager-azonosítóját a biztonsági mentéshez. Ez az azonosító szolgál az adatbázis azonosítójaként. Az alábbi példa egy PostgreSQL-kiszolgáló empdb11alatt elnevezett testposgresql adatbázist használ, amely egy másik előfizetésben található az erőforráscsoportbanossrg. A példa a Basht használja.

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

Kulcstároló

Az Azure Backup szolgáltatás nem tárolja a felhasználónevet és a jelszót a PostgreSQL-adatbázishoz való csatlakozáshoz. Ehelyett a biztonsági mentési rendszergazda a kulcsokat a kulcstartóba helyezi. Az Azure Backup szolgáltatás ezután hozzáfér a kulcstartóhoz, beolvassa a kulcsokat, és hozzáfér az adatbázishoz.

Az alábbi példa a Basht használja. Jegyezze fel a megfelelő kulcs titkos azonosítóját.

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

Biztonsági mentési tárhely

A Backup-tárolónak csatlakoznia kell a PostgreSQL-kiszolgálóhoz, majd a kulcstartóban található kulcsokkal kell elérnie az adatbázist. A Backup-tárolónak tehát hozzá kell férnie a PostgreSQL-kiszolgálóhoz és a kulcstartóhoz. A hozzáférés a Backup-tároló felügyelt identitásához engedélyezett.

Olvassa el azokat az engedélyeket, amelyeket meg kell adnia a Backup-tároló felügyelt identitásának a PostgreSQL-kiszolgálón és az adatbázis kulcsait tároló kulcstartóban.

A kérés előkészítése

Miután beállította az összes vonatkozó engedélyt, hajtsa végre a biztonsági mentés konfigurálását két lépésben:

  1. Állítsa össze a kérést a megfelelő tároló, szabályzat és PostgreSQL-adatbázis használatával a az dataprotection backup-instance initialize parancsban.
  2. Küldje el az adatbázis biztonsági mentésére vonatkozó kérést a az dataprotection backup-instance create parancs használatával.
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

Igény szerinti biztonsági mentések futtatása

A biztonsági mentés indításakor meg kell adnia egy adatmegőrzési szabályt. A szabályzat megőrzési szabályainak megtekintéséhez tallózzon a szabályzat JSON-fájljában. Az alábbi példában két adatmegőrzési szabály szerepel a nevek Default és Monthlya . Ez a cikk az Monthly igény szerinti biztonsági mentés szabályát használja.

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

Igény szerinti biztonsági mentés indításához használja a az dataprotection backup-instance adhoc-backup következő parancsot:

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

Feladatok nyomon követése

Az összes feladat nyomon követése a az dataprotection job list parancs használatával. Listázhatja az összes feladatot, és lekérhet egy adott feladatrészletet.

Az összes feladat nyomon követésére is használható Az.ResourceGraph az összes Backup-tárolóban. az dataprotection job list-from-resourcegraph A parancs használatával lekérje a megfelelő feladatokat a Backup-tárolók között:

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