Tworzenie kopii zapasowych baz danych usługi Azure PostgreSQL przy użyciu interfejsu wiersza polecenia platformy Azure

W tym artykule wyjaśniono, jak utworzyć kopię zapasową bazy danych Azure PostgreSQL przy użyciu interfejsu wiersza polecenia platformy Azure.

Ten artykuł obejmuje następujące zagadnienia:

  • Tworzenie magazynu kopii zapasowych
  • Tworzenie zasad kopii zapasowych
  • Konfigurowanie kopii zapasowej bazy danych Azure PostgreSQL
  • Uruchamianie zadania tworzenia kopii zapasowej na żądanie

Aby uzyskać informacje o obsługiwanych scenariuszach i ograniczeniach baz danych informgreSQL, zobacz macierz obsługi.

Tworzenie magazynu kopii zapasowych

Magazyn kopii zapasowych to jednostka magazynu na platformie Azure. W ten sposób są przechowywane dane kopii zapasowej dla nowych obciążeń, które Azure Backup obsługują. Na przykład Azure Database for PostgreSQL serwerów, obiektów blob na koncie magazynu i dysków platformy Azure. Magazyny kopii zapasowych ułatwiają organizowanie danych kopii zapasowych przy jednoczesnym zminimalizowaniu obciążeń związanych z zarządzaniem. Magazyny kopii zapasowych są oparte na modelu usługi Azure Resource Manager platformy Azure, który zapewnia ulepszone funkcje ułatwiające zabezpieczanie danych kopii zapasowych.

Przed utworzeniem magazynu usługi Backup wybierz nadmiarowość magazynu danych w magazynie. Następnie przejdź do tworzenia magazynu kopii zapasowych z tym nadmiarowością magazynu i lokalizacją.

W tym artykule utworzymy magazyn usługi Backup TestBkpVault w regionie westus w obszarze test grupy zasobówBkpVaultRG. Użyj polecenia az dataprotection vault create , aby utworzyć magazyn usługi Backup. Dowiedz się więcej o tworzeniu magazynu usługi 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 utworzeniu magazynu utwórzmy zasady tworzenia kopii zapasowych w celu ochrony baz danych Usługi Azure PostgreSQL.

Tworzenie zasad kopii zapasowych

Informacje o zasadach tworzenia kopii zapasowych bazy danych PostGreSQL

Chociaż kopia zapasowa dysku oferuje wiele kopii zapasowych dziennie, a kopia zapasowa obiektów blob jest ciągłą kopią zapasową bez wyzwalacza, kopia zapasowa PostgreSQL oferuje ochronę archiwum. Dane kopii zapasowej, które są najpierw wysyłane do magazynu, można następnie przenieść do warstwy archiwum zgodnie ze zdefiniowaną regułą lub cyklem życia. W tym kontekście zrozumiemy obiekt zasad tworzenia kopii zapasowych dla bazy danych PostgreSQL.

  • Reguła zasad
    • Kopia zapasowarule
      • Parametr kopii zapasowej
        • BackupType (pełna kopia zapasowa bazy danych w tym przypadku)
        • Początkowy magazyn danych (gdzie początkowo będą wykonywane kopie zapasowe)
        • Wyzwalacz (jak jest wyzwalana kopia zapasowa)
          • Na podstawie harmonogramu
          • Domyślne kryteria tagowania (domyślny "tag" dla wszystkich zaplanowanych kopii zapasowych. Ten tag łączy kopie zapasowe z regułą przechowywania)
    • Domyślna reguła przechowywania (reguła, która będzie stosowana do wszystkich kopii zapasowych domyślnie w początkowym magazynie danych)

W związku z tym ten obiekt określa, jaki typ kopii zapasowych jest wyzwalany, jak są wyzwalane (za pośrednictwem harmonogramu), z czym są oznaczone, gdzie znajdują się (magazyn danych) oraz cykl życia danych kopii zapasowej w magazynie danych. Domyślny obiekt programu PowerShell dla bazy danych PostgreSQL informuje o wyzwoleniu pełnej kopii zapasowej co tydzień i dotrze do magazynu, w którym są przechowywane przez trzy miesiące.

Jeśli chcesz dodać warstwę archiwum do zasad, musisz zdecydować, kiedy dane zostaną przeniesione z magazynu do archiwum, jak długo dane pozostaną w archiwum i które z zaplanowanych kopii zapasowych powinny zostać oznaczone jako archiwizowane. W związku z tym należy dodać regułę przechowywania, w której cykl życia danych kopii zapasowej będzie definiowany z magazynu danych do archiwum magazynu danych i jak długo pozostaną w magazynie danych archiwum . Następnie musisz dodać tag , który będzie oznaczać zaplanowane kopie zapasowe jako kwalifikujące się do archiwizacji.

Wynikowy obiekt programu PowerShell jest następujący:

  • Reguła zasad
    • Kopia zapasowarule
      • Parametr kopii zapasowej
        • BackupType (pełna kopia zapasowa bazy danych w tym przypadku)
        • Początkowy magazyn danych (gdzie początkowo będą wykonywane kopie zapasowe)
        • Wyzwalacz (jak jest wyzwalana kopia zapasowa)
          • Na podstawie harmonogramu
          • Domyślne kryteria tagowania (domyślny "tag" dla wszystkich zaplanowanych kopii zapasowych. Ten tag łączy kopie zapasowe z regułą przechowywania)
          • Nowe kryteria tagowania nowej reguły przechowywania o tej samej nazwie "X"
    • Domyślna reguła przechowywania (reguła, która będzie stosowana do wszystkich kopii zapasowych domyślnie w początkowym magazynie danych)
    • Nowa reguła przechowywania o nazwie "X"
      • Cykl życia
        • Źródłowy magazyn danych
        • Usuń po okresie w źródłowym magazynie danych
        • Kopiowanie do docelowego magazynu danych

Pobieranie szablonu zasad

Aby poznać wewnętrzne składniki zasad kopii zapasowej dla kopii zapasowej bazy danych Azure PostgreSQL, pobierz szablon zasad przy użyciu polecenia az dataprotection backup-policy get-default-policy-template . To polecenie zwraca domyślny szablon zasad dla danego typu źródła danych. Użyj tego szablonu zasad, aby utworzyć nowe zasady.

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

Szablon zasad składa się z wyzwalacza (który decyduje, co wyzwala tworzenie kopii zapasowej) i cyklu życia (który decyduje, kiedy usunąć/skopiować/przenieść kopię zapasową). W kopii zapasowej bazy danych usługi Azure PostgreSQL wartość domyślna wyzwalacza to zaplanowany wyzwalacz tygodniowy (jedna kopia zapasowa co siedem dni) i przechowywanie każdej kopii zapasowej przez trzy miesiące.

Wyzwalacz zaplanowany:

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

Domyślny cykl życia reguły przechowywania:

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

Modyfikowanie szablonu zasad

Ważne

W Azure PowerShell obiekty mogą być używane jako lokalizacje przejściowe do wykonywania wszystkich modyfikacji. W interfejsie wiersza polecenia platformy Azure musimy używać plików, ponieważ nie ma pojęcia obiektów. Każda operacja edycji powinna zostać przekierowana do nowego pliku, w którym zawartość jest odczytywana z pliku wejściowego i ponownie kierowana do pliku wyjściowego. Później możesz zmienić nazwę pliku zgodnie z potrzebami podczas używania w skryfcie.

Modyfikowanie harmonogramu

Domyślny szablon zasad oferuje kopię zapasową raz w tygodniu. Możesz zmodyfikować harmonogram tworzenia kopii zapasowej w ciągu kilku dni w tygodniu. Aby zmodyfikować harmonogram, użyj polecenia az dataprotection backup-policy trigger set .

Poniższy przykład modyfikuje cotygodniową kopię zapasową, aby wykonać kopię zapasową w każdą niedzielę, środę i piątek każdego tygodnia. Tablica dat harmonogramu zawiera daty, a dni tygodnia tych dat są traktowane jako dni tygodnia. Należy również określić, że te harmonogramy powinny być powtarzane co tydzień. W związku z tym interwał harmonogramu to "1", a typ interwału to "Co tydzień".

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

Dodawanie nowej reguły przechowywania

Jeśli chcesz dodać ochronę archiwum , musisz zmodyfikować szablon zasad, jak pokazano poniżej.

Domyślny szablon będzie miał cykl życia początkowego magazynu danych w ramach domyślnej reguły przechowywania. W tym scenariuszu reguła mówi, aby usunąć dane kopii zapasowej po trzech miesiącach. Należy dodać nową regułę przechowywania, która definiuje, kiedy dane są przenoszone do magazynu danych archiwum , czyli dane kopii zapasowej są najpierw kopiowane do magazynu danych archiwum, a następnie usuwane w magazynie danych. Ponadto reguła powinna określać, jak długo dane są przechowywane w magazynie danych archiwum . Użyj polecenia az dataprotection backup-policy retention-rule create-lifecycle , aby utworzyć nowe cykle życia i użyć polecenia az dataprotection backup-policy retention-rule set , aby skojarzyć je z nowymi regułami lub istniejącymi regułami.

W poniższym przykładzie zostanie utworzona nowa reguła przechowywania o nazwie Co miesiąc, w której pierwsza pomyślna kopia zapasowa każdego miesiąca powinna być przechowywana w magazynie przez sześć miesięcy, przeniesiona do warstwy Archiwum i przechowywana w warstwie Archiwum przez 24 miesiące.

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

Dodawanie tagu i odpowiednich kryteriów

Po utworzeniu reguły przechowywania należy utworzyć odpowiedni tag we właściwości Trigger zasad kopii zapasowej. Użyj polecenia az dataprotection backup-policy tag create-absolute-criteria , aby utworzyć nowe kryteria tagowania i użyć polecenia az dataprotection backup-policy tag set , aby zaktualizować istniejący tag lub utworzyć nowy tag.

Poniższy przykład tworzy nowy tag wraz z kryteriami, pierwszą pomyślną kopię zapasową miesiąca. Tag ma taką samą nazwę jak odpowiednia reguła przechowywania, która ma zostać zastosowana.

W tym przykładzie kryteria tagu powinny mieć nazwę Co miesiąc.

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

Załóżmy, że harmonogram zawiera wiele kopii zapasowych w tygodniu (co niedzielę, środę, czwartek, jak określono w powyższym przykładzie) i chcesz zarchiwizować kopie zapasowe w niedzielę i piątek, kryteria tagowania można zmienić w następujący sposób, używając polecenia 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

Tworzenie nowych zasad tworzenia kopii zapasowych bazy danych PostgreSQL

Po zmodyfikowaniu szablonu zgodnie z wymaganiami użyj polecenia az dataprotection backup-policy create , aby utworzyć zasady przy użyciu zmodyfikowanego szablonu.

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

Konfigurowanie kopii zapasowych

Po utworzeniu magazynu i zasad należy wziąć pod uwagę trzy krytyczne kwestie, które należy wziąć pod uwagę w celu ochrony bazy danych Azure PostgreSQL.

Kluczowe jednostki zaangażowane

Baza danych PostGreSQL do ochrony

Pobierz identyfikator usługi Azure Resource Manager (IDENTYFIKATOR ARM) bazy danych PostgreSQL do ochrony. Służy to jako identyfikator bazy danych. Użyjemy przykładu bazy danych o nazwie empdb11 w ramach serwera PostgreSQL testposgresql, która znajduje się w grupie zasobów ossrg w ramach innej subskrypcji.

W poniższym przykładzie użyto powłoki bash.

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

Magazyn kluczy platformy Azure

Usługa Azure Backup nie przechowuje nazwy użytkownika i hasła w celu nawiązania połączenia z bazą danych PostgreSQL. Zamiast tego administrator kopii zapasowej musi wstawić klucze do magazynu kluczy. Następnie usługa Backup będzie uzyskiwać dostęp do magazynu kluczy, odczytywać klucze, a następnie uzyskiwać dostęp do bazy danych. Zanotuj identyfikator wpisu tajnego odpowiedniego klucza.

W poniższym przykładzie użyto powłoki bash.

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

Magazyn kopii zapasowych

Magazyn kopii zapasowych musi nawiązać połączenie z serwerem PostgreSQL, a następnie uzyskać dostęp do bazy danych za pośrednictwem kluczy znajdujących się w magazynie kluczy. W związku z tym wymaga dostępu do serwera PostgreSQL i magazynu kluczy. Dostęp jest przyznawany tożsamości usługi zarządzanej magazynu kopii zapasowych (MSI).

Zobacz uprawnienia , które należy przyznać tożsamości usługi zarządzanej magazynu kopii zapasowych (MSI) na serwerze PostgreSQL i usłudze Azure Key Vault, który przechowuje klucze do bazy danych.

Przygotowywanie żądania

Po ustawieniu wszystkich odpowiednich uprawnień konfiguracja kopii zapasowej jest wykonywana w dwóch krokach.

  1. Przygotowujemy odpowiednie żądanie przy użyciu odpowiedniego magazynu, zasad, bazy danych PostgreSQL przy użyciu polecenia az dataprotection backup-instance initialize .
  2. Przesyłamy żądanie ochrony bazy danych przy użyciu polecenia 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

Uruchamianie tworzenia kopii zapasowej na żądanie

Musisz określić regułę przechowywania podczas wyzwalania kopii zapasowej. Aby wyświetlić reguły przechowywania w zasadach, przejdź przez plik JSON zasad dla reguł przechowywania. W poniższym przykładzie istnieją dwie reguły przechowywania o nazwach Domyślne i Miesięczne. Użyjemy reguły Miesięcznej dla kopii zapasowej na żądanie.

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

Aby wyzwolić kopię zapasową na żądanie, użyj polecenia az dataprotection backup-instance adhoc-backup .

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

Śledzenie zadań

Śledź wszystkie zadania przy użyciu polecenia az dataprotection job list . Możesz wyświetlić listę wszystkich zadań i pobrać szczegóły określonego zadania.

Możesz również użyć narzędzia Az.ResourceGraph do śledzenia wszystkich zadań we wszystkich magazynach usługi Backup. Użyj polecenia az dataprotection job list-from-resourcegraph , aby pobrać odpowiednie zadania, które znajdują się w magazynach usługi Backup.

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

Następne kroki