Udostępnij za pośrednictwem


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. Przechowuje to dane kopii zapasowej dla nowych obciążeń, które obsługuje usługa Azure Backup. Na przykład serwery usługi Azure Database for PostgreSQL, obiekty blob na koncie magazynu i dyski platformy Azure. Magazyny kopii zapasowych pomagają organizować dane kopii zapasowej, jednocześnie minimalizując obciążenie związane z zarządzaniem. Magazyny kopii zapasowych są oparte na modelu usługi Azure Resource Manager platformy Azure, który zapewnia rozszerzone możliwości ułatwiające zabezpieczanie danych kopii zapasowych.

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

W tym artykule utworzymy magazyn kopii zapasowych TestBkpVault w regionie westus w obszarze test grupy zasobówBkpVaultRG. Użyj polecenia az dataprotection vault create, aby utworzyć magazyn kopii zapasowych. Dowiedz się więcej o tworzeniu magazynu kopii zapasowych.

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, aby chronić bazy danych Azure PostgreSQL.

Tworzenie zasad kopii zapasowych

Omówienie zasad 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 wysyłane najpierw do magazynu można następnie przenieść do warstwy archiwum zgodnie ze zdefiniowaną regułą lub cyklem życia. W tym kontekście zapoznajmy się z obiektem zasad tworzenia kopii zapasowych dla bazy danych PostgreSQL.

  • PolicyRule
    • BackupRule
      • Parametr kopii zapasowej
        • BackupType (pełna kopia zapasowa bazy danych w tym przypadku)
        • Początkowy magazyn danych (gdzie kopie zapasowe zostaną początkowo wylądowane)
        • 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 zostanie zastosowana do wszystkich kopii zapasowych, domyślnie w początkowym magazynie danych)

W związku z tym ten obiekt definiuje, jakiego typu kopie zapasowe są wyzwalane, jak są wyzwalane (za pośrednictwem harmonogramu), z czym są oznaczane, gdzie znajdują się (magazyn danych) oraz cykl życia danych kopii zapasowej w magazynie danych. Domyślny obiekt programu PowerShell dla bazy danych PostgreSQL mówi, że wyzwala pełną kopię zapasową 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 magazynu danych archiwum 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 zarchiwizowania.

Wynikowy obiekt programu PowerShell jest następujący:

  • PolicyRule
    • BackupRule
      • Parametr kopii zapasowej
        • BackupType (pełna kopia zapasowa bazy danych w tym przypadku)
        • Początkowy magazyn danych (gdzie kopie zapasowe zostaną początkowo wylądowane)
        • 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 zostanie zastosowana 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 zrozumieć składniki wewnętrzne 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 o wyzwalaczu kopii zapasowej) i cyklu życia (który decyduje, kiedy usunąć/skopiować/przenieść kopię zapasową). W kopii zapasowej bazy danych Azure PostgreSQL wartość domyślna wyzwalacza to zaplanowany cotygodniowy wyzwalacz (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 programie 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 korzystania ze skryptu.

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 tygodnia. Należy również określić, że te harmonogramy powinny być powtarzane co tydzień. Dlatego interwał harmonogramu wynosi 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 informuje o usunięciu danych 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 jeśli harmonogram obejmuje wiele kopii zapasowych tygodniowo (w każdą 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 on 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"

Azure Key Vault

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 umieścić klucze w magazynie 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 to dostępu do serwera PostgreSQL i magazynu kluczy. Dostęp jest udzielany tożsamości usługi zarządzanej (MSI) magazynu kopii zapasowych.

Zobacz uprawnienia, które należy udzielić tożsamości usługi zarządzanej magazynu kopii zapasowych na serwerze PostgreSQL i usłudze Azure Key Vault, który przechowuje klucze w bazie 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 za pomocą 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

Podczas wyzwalania kopii zapasowej musisz określić regułę przechowywania. Aby wyświetlić reguły przechowywania w zasadach, przejdź do pliku 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 za pomocą 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