Zálohování databází Azure PostgreSQL pomocí Azure CLI

Tento článek vysvětluje, jak zálohovat databázi Azure PostgreSQL pomocí Azure CLI.

V tomto článku se naučíte:

  • Vytvoření trezoru služby Backup
  • Vytvoření zásad zálohování
  • Konfigurace zálohování databáze Azure PostgreSQL
  • Spuštění úlohy zálohování na vyžádání

Informace o podporovaných scénářích a omezeních databází informgreSQL najdete v matici podpory.

Vytvoření trezoru služby Backup

Trezor služby Backup je entita úložiště v Azure. Tím se ukládají zálohovaná data pro nové úlohy, které Azure Backup podporuje. Například servery Azure Database for PostgreSQL, objekty blob v účtu úložiště a disky Azure. Trezory záloh pomáhají uspořádat zálohovaná data a současně minimalizovat režijní náklady na správu. Trezory záloh jsou založené na modelu Azure Resource Manageru v Azure, který poskytuje vylepšené možnosti, které pomáhají zabezpečit zálohovaná data.

Než vytvoříte trezor služby Backup, zvolte redundanci úložiště dat v trezoru. Pak pokračujte vytvořením trezoru služby Backup s danou redundancí úložiště a umístěním.

V tomto článku vytvoříme trezor záloh TestBkpVault v oblasti westus v rámci skupiny prostředků testBkpVaultRG. K vytvoření trezoru služby Backup použijte příkaz az dataprotection vault create. Přečtěte si další informace o vytváření trezoru služby Backup.

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": "2ca1d5f7-38b3-4b61-aa45-8147d7e0edbc",
    "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"
}

Po vytvoření trezoru vytvoříme zásadu zálohování pro ochranu databází Azure PostgreSQL.

Vytvoření zásady zálohování

Principy zásad zálohování PostGreSQL

Zálohování disků sice nabízí několik záloh za den a zálohování objektů blob je průběžné zálohování bez triggeru, ale zálohování PostgreSQL nabízí ochranu archivu. Zálohovaná data, která se poprvé odesílají do trezoru, se pak dají přesunout do archivní úrovně podle definovaného pravidla nebo životního cyklu. V tomto kontextu se podíváme na objekt zásad zálohování pro PostgreSQL.

  • Zásady – pravidla
    • BackupRule
      • BackupParameter
        • BackupType (v tomto případě úplné zálohování databáze)
        • Počáteční úložiště dat (kde budou zálohy zpočátku přistály)
        • Trigger (jak se aktivuje zálohování)
          • Podle plánu
          • Výchozí kritéria označování (výchozí značka pro všechny naplánované zálohy) Tato značka pro propojení záloh s pravidlem uchovávání informací)
    • Výchozí pravidlo uchovávání informací (pravidlo, které se ve výchozím nastavení použije pro všechny zálohy v počátečním úložišti dat)

Tento objekt tedy definuje, jaký typ záloh se aktivuje, jak se aktivují (prostřednictvím plánu), co jsou označené, kde se nacházejí (úložiště dat) a životní cyklus zálohovaných dat v úložišti dat. Výchozí objekt PowerShellu pro PostgreSQL říká, že každý týden aktivuje úplné zálohování a dostane se do trezoru, kde jsou uložené tři měsíce.

Pokud chcete do zásad přidat archivní úroveň, musíte se rozhodnout, kdy se data přesunou z trezoru do archivu, jak dlouho zůstanou data v archivu a která z plánovaných záloh by se měla označit jako archivovatelná. Proto musíte přidat pravidlo uchovávání informací, kde se životní cyklus zálohovaných dat definuje z úložiště dat trezoru až po archivaci úložiště dat a jak dlouho zůstanou v archivu úložiště dat. Pak potřebujete přidat značku , která označí naplánované zálohy jako způsobilé k archivaci.

Výsledný objekt PowerShellu je následující:

  • Zásady – pravidla
    • BackupRule
      • BackupParameter
        • BackupType (v tomto případě úplné zálohování databáze)
        • Počáteční úložiště dat (kde budou zálohy zpočátku přistály)
        • Trigger (jak se aktivuje zálohování)
          • Podle plánu
          • Výchozí kritéria označování (výchozí značka pro všechny naplánované zálohy) Tato značka pro propojení záloh s pravidlem uchovávání informací)
          • Nová kritéria označování pro nové pravidlo uchovávání informací se stejným názvem X
    • Výchozí pravidlo uchovávání informací (pravidlo, které se ve výchozím nastavení použije pro všechny zálohy v počátečním úložišti dat)
    • Nové pravidlo uchovávání informací s názvem X
      • Životní cyklus
        • Úložiště zdrojových dat
        • Odstranění po časovém období ve zdrojovém úložišti dat
        • Kopírování do cílového úložiště dat

Načtení šablony zásad

Pokud chcete porozumět vnitřním komponentám zásad zálohování pro zálohování databáze Azure PostgreSQL, načtěte šablonu zásad pomocí příkazu az dataprotection backup-policy get-default-policy-template . Tento příkaz vrátí výchozí šablonu zásad pro daný typ zdroje dat. Pomocí této šablony zásad můžete vytvořit novou zásadu.

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

Šablona zásad se skládá z triggeru (který rozhoduje o tom, co aktivuje zálohování) a životního cyklu (který se rozhodne, kdy se má záloha odstranit, zkopírovat nebo přesunout). V zálohování databáze Azure PostgreSQL je výchozí hodnota triggeru naplánovaného týdenního triggeru (jedna záloha každých sedm dnů) a zachování každé zálohy po dobu tří měsíců.

Naplánovaná aktivační událost:

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

Výchozí životní cyklus pravidla uchovávání informací:

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

Úprava šablony zásad

Důležité

V Azure PowerShellu je možné objekty použít jako pracovní umístění k provedení všech úprav. V Azure CLI musíme používat soubory, protože neexistuje žádný pojem o objektech. Každá operace úprav by měla být přesměrována na nový soubor, kde se obsah načítá ze vstupního souboru a znovu směruje do výstupního souboru. Později můžete soubor přejmenovat podle potřeby při použití ve skriptu.

Úprava plánu

Výchozí šablona zásad nabízí zálohu jednou týdně. Plán zálohování můžete upravit tak, aby probíhalo více dní v týdnu. Pokud chcete plán upravit, použijte příkaz az dataprotection backup-policy trigger set .

Následující příklad upraví týdenní zálohu tak, aby se zálohovala každou neděli, středu a pátek každého týdne. Pole kalendářních dat plánu uvádí kalendářní data a dny v týdnu těchto kalendářních dat se přijímají jako dny v týdnu. Musíte také určit, že by se tyto plány měly opakovat každý týden. Interval plánu je tedy 1 a typ intervalu je Týdenní.

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

Přidání nového pravidla uchovávání informací

Pokud chcete přidat archivní ochranu, musíte šablonu zásad upravit následujícím způsobem.

Výchozí šablona bude mít životní cyklus počátečního úložiště dat v rámci výchozího pravidla uchovávání informací. V tomto scénáři pravidlo říká, že po třech měsících odstraní zálohovaná data. Měli byste přidat nové pravidlo uchovávání informací, které definuje, kdy se data přesunou do archivu úložiště dat, tj. zálohovaná data se nejprve zkopírují do archivu úložiště dat a pak se odstraní v úložišti dat trezoru. Pravidlo by také mělo definovat, jak dlouho se data uchovávají v archivačním úložišti dat. Pomocí příkazu az dataprotection backup-policy retention-rule create-lifecycle vytvořte nové životní cyklus a pomocí příkazu az dataprotection backup-policy retention-rule set je přidružte k novým pravidlům nebo k existujícím pravidlům.

Následující příklad vytvoří nové pravidlo uchovávání s názvem Měsíčně, kde by se první úspěšná záloha každého měsíce měla uchovávat v trezoru po dobu šesti měsíců, přesunout do archivní úrovně a uchovávat v archivní vrstvě po dobu 24 měsíců.

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

Přidání značky a relevantních kritérií

Po vytvoření pravidla uchovávání informací musíte vytvořit odpovídající značku ve vlastnosti Trigger zásady zálohování. Pomocí příkazu az dataprotection backup-policy tag create-absolute-criteria vytvořte nová kritéria označování a pomocí příkazu az dataprotection backup-policy tag set aktualizujte existující značku nebo vytvořte novou značku.

Následující příklad vytvoří novou značku spolu s kritérii, první úspěšnou zálohu měsíce. Značka má stejný název jako odpovídající pravidlo uchovávání informací, které se má použít.

V tomto příkladu by se kritéria značek měla jmenovat Měsíčně.

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

Předpokládejme, že pokud je plán více záloh za týden (každou neděli, středu, čtvrtek uvedený v předchozím příkladu) a chcete archivovat zálohy v neděli a pátek, pak je možné kritéria označování změnit následujícím způsobem pomocí příkazu az dataprotection backup-policy tag create-generic-criteria .

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

Vytvoření nové zásady zálohování PostgreSQL

Jakmile se šablona upraví podle požadavků, pomocí příkazu az dataprotection backup-policy create vytvořte zásadu pomocí upravené šablony.

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

Konfigurace zálohování

Po vytvoření trezoru a zásad existují tři kritické body, které je potřeba zvážit při ochraně databáze Azure PostgreSQL.

Zahrnuté klíčové entity

Databáze PostGreSQL, která se má chránit

Načtěte ID Azure Resource Manageru (ID ARM) PostgreSQL, které se má chránit. Slouží jako identifikátor databáze. Použijeme příklad databáze s názvem empdb11 pod serverem PostgreSQL testposgresql, který se nachází ve skupině prostředků ossrg v jiném předplatném.

Následující příklad používá Bash.

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

Azure Key Vault

Služba Azure Backup neukládá uživatelské jméno a heslo pro připojení k databázi PostgreSQL. Místo toho musí správce zálohování klíče zasadit do trezoru klíčů. Pak bude služba Backup přistupovat k trezoru klíčů, číst klíče a pak přistupovat k databázi. Poznamenejte si tajný identifikátor příslušného klíče.

Následující příklad používá Bash.

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

Trezor služby Backup

Trezor služby Backup se musí připojit k serveru PostgreSQL a pak přistupovat k databázi prostřednictvím klíčů, které jsou přítomné v trezoru klíčů. Proto vyžaduje přístup k serveru PostgreSQL a trezoru klíčů. Přístup se uděluje identitě spravované služby (MSI) trezoru služby Backup.

Podívejte se na oprávnění , která byste měli udělit identitě spravované služby (MSI) trezoru služby Backup na serveru PostgreSQL a trezoru klíčů Azure, který ukládá klíče do databáze.

Příprava požadavku

Jakmile jsou nastavena všechna příslušná oprávnění, konfigurace zálohování se provádí ve dvou krocích.

  1. Připravíme relevantní požadavek pomocí příslušného trezoru, zásady, databáze PostgreSQL pomocí příkazu az dataprotection backup-instance initialize .
  2. Odešleme žádost o ochranu databáze pomocí příkazu az dataprotection backup-instance create .
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

Spuštění zálohování na vyžádání

Při aktivaci zálohování musíte zadat pravidlo uchovávání informací. Pokud chcete zobrazit pravidla uchovávání informací v zásadách, projděte si soubor JSON zásad pro pravidla uchovávání informací. V následujícím příkladu existují dvě pravidla uchovávání informací s názvy Výchozí a Měsíční. Pro zálohování na vyžádání použijeme pravidlo Měsíčně .

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

Pokud chcete aktivovat zálohování na vyžádání, použijte příkaz az dataprotection backup-instance adhoc-backup .

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

Sledování úloh

Pomocí příkazu az dataprotection job list můžete sledovat všechny úlohy. Můžete zobrazit seznam všech úloh a načíst konkrétní podrobnosti úlohy.

Ke sledování všech úloh napříč všemi trezory služby Backup můžete použít také Az.ResourceGraph . Pomocí příkazu az dataprotection job list-from-resourcegraph načtěte relevantní úlohy, které jsou napříč trezory služby Backup.

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

Další kroky