Udostępnij za pomocą


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

W tym artykule opisano sposób tworzenia kopii zapasowych baz danych PostgreSQL w usłudze Azure Virtual Machines przy użyciu interfejsu wiersza polecenia platformy Azure. Możesz również skonfigurować tworzenie kopii zapasowych przy użyciu witryny Azure Portal, programu Azure PowerShell i interfejsu API REST dla baz danych PostgreSQL.

Dowiedz się więcej na temat obsługiwanych scenariuszy i często zadawanych pytań dotyczących tworzenia kopii zapasowej usługi Azure Database for PostgreSQL.

Tworzenie magazynu kopii zapasowych

Skrytka kopii zapasowej to jednostka magazynowa w Azure. Przechowuje dane kopii zapasowej dla nowych obciążeń obsługiwanych przez usługę Azure Backup, takich jak 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 skrytki kopii zapasowych wybierz nadmiarowość przechowywania danych. Następnie rozpocznij tworzenie magazynu kopii zapasowych z tą nadmiarowością magazynowania i lokalizacją.

W tym artykule utworzysz magazyn kopii zapasowych o nazwie TestBkpVault, w regionie westus, w grupie zasobów testBkpVaultRG. 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": "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"
}

Utwórz politykę tworzenia kopii zapasowych

Po utworzeniu repozytorium można utworzyć politykę kopii zapasowej, aby chronić bazy danych PostgreSQL. Można również utworzyć zasady tworzenia kopii zapasowych dla baz danych PostgreSQL przy użyciu interfejsu API REST.

Omówienie zasad tworzenia kopii zapasowych bazy danych PostgreSQL

Podczas gdy kopia zapasowa dysku oferuje wiele kopii zapasowych dziennie, a kopia zapasowa obiektu blob jest ciągłą kopią zapasową bez wyzwalacza, kopia zapasowa PostgreSQL zapewnia ochronę archiwum. Dane kopii zapasowej, które są najpierw wysyłane do magazynu, można przenieść do warstwy archiwum zgodnie ze zdefiniowaną regułą lub cyklem życia.

W tym kontekście następująca hierarchia może ułatwić zrozumienie obiektu zasad tworzenia kopii zapasowych dla bazy danych PostgreSQL:

  • Reguła polityki
    • Reguła tworzenia kopii zapasowej
      • Parametr kopii zapasowej
        • Typ kopii zapasowej (pełna kopia zapasowa bazy danych w tym przypadku)
        • Początkowy magazyn danych (w którym początkowo są wykonywane kopie zapasowe)
        • Wyzwalacz (jak jest wyzwalana kopia zapasowa)
          • Rozkład
          • Domyślne kryteria tagowania (domyślny tag, który łączy wszystkie zaplanowane kopie zapasowe z regułą przechowywania)
    • Domyślna reguła przechowywania (reguła zastosowana do wszystkich kopii zapasowych domyślnie w początkowym magazynie danych)

Obiekt zasad określa, jakie typy kopii zapasowych są wyzwalane, jak są wyzwalane (za pośrednictwem harmonogramu), z czym są oznaczane, gdzie znajdują się (magazyn danych) oraz cykl życia danych w magazynie danych.

Domyślny obiekt programu PowerShell dla bazy danych PostgreSQL mówi, że co tydzień wyzwala pełną kopię zapasową. Kopie zapasowe docierają do skarbca, 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. Musisz dodać zasadę retencji, która definiuje cykl życia danych kopii zapasowych z magazynu danych sejfu do magazynu danych archiwalnego. Reguła przechowywania określa również, jak długo dane kopii zapasowej pozostaną w magazynie danych archiwum. Następnie należy dodać tag, który oznacza zaplanowane kopie zapasowe jako kwalifikujące się do zarchiwizowania.

Wynikowy obiekt programu PowerShell jest następujący:

  • Reguła polityki
    • Reguła tworzenia kopii zapasowej
      • Parametr kopii zapasowej
        • Typ kopii zapasowej (pełna kopia zapasowa bazy danych w tym przypadku)
        • Początkowy magazyn danych (w którym początkowo są wykonywane kopie zapasowe)
        • Wyzwalacz (jak jest wyzwalana kopia zapasowa)
          • Rozkład
          • Domyślne kryteria tagowania (domyślny tag, który łączy wszystkie zaplanowane kopie zapasowe z regułą przechowywania)
          • Nowe kryteria tagowania dla nowej reguły przechowywania o tej samej nazwie
    • Domyślna reguła przechowywania (reguła zastosowana do wszystkich kopii zapasowych domyślnie w początkowym magazynie danych)
    • Nowa reguła przechowywania
      • Cykl życia
        • Źródłowy magazyn danych
        • Okres usuwania 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 PostgreSQL, pobierz szablon zasad przy użyciu az dataprotection backup-policy get-default-policy-template polecenia . To polecenie zwraca domyślny szablon zasad dla 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 wyzwalaniu kopii zapasowej) i cyklu życia (który decyduje, kiedy usunąć, skopiować lub przenieść kopię zapasową). W kopii zapasowej bazy danych PostgreSQL domyślna wartość dla wyzwalacza to zaplanowane co tydzień tworzenie kopii zapasowej (jedna kopia co siedem dni). Każda kopia zapasowa jest przechowywana 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 dla reguły przetrzymywania

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

Modyfikowanie szablonu zasad

W programie Azure PowerShell można użyć obiektów jako lokalizacji przejściowych, aby wykonać wszystkie modyfikacje. W Azure CLI trzeba używać plików, ponieważ nie istnieje koncepcja obiektów. Każda operacja edycji powinna zostać przekierowana do nowego pliku, w którym zawartość jest odczytywana z pliku wejściowego i przekierowywana do pliku wyjściowego. Później możesz zmienić nazwę pliku zgodnie z potrzebami podczas używania go 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 az dataprotection backup-policy trigger set polecenia .

Poniższy przykład modyfikuje cotygodniową kopię zapasową do niedzieli, środy i piątku każdego tygodnia. Tablica dat harmonogramu zawiera daty, a odpowiadające im dni są określane jako dni tygodnia. Należy również określić, że te harmonogramy powinny być powtarzane co tydzień. Dlatego interwał harmonogramu to 1 , a typ interwału to 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

Dodawanie nowej reguły przechowywania

Jeśli chcesz dodać ochronę archiwum, musisz zmodyfikować szablon zasad.

Domyślny szablon zawiera 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. Oznacza to, że dane kopii zapasowej są najpierw kopiowane do magazynu danych archiwum, a następnie usuwane z magazynu danych sejfu.

Ponadto reguła powinna definiować czas przechowywania danych w magazynie danych archiwum. Aby utworzyć nowe cykle życia, użyj az dataprotection backup-policy retention-rule create-lifecycle polecenia . Aby skojarzyć te cykle życia z nowymi lub istniejącymi regułami, użyj az dataprotection backup-policy retention-rule set polecenia .

Poniższy przykład tworzy nową regułę przechowywania o nazwie Monthly. W tej regule pierwsza pomyślna kopia zapasowa każdego miesiąca jest 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 Trigger właściwości zasad kopii zapasowej. Aby utworzyć nowe kryteria tagowania, użyj az dataprotection backup-policy tag create-absolute-criteria polecenia . Aby zaktualizować istniejący tag lub utworzyć nowy tag, użyj az dataprotection backup-policy tag set polecenia .

Poniższy przykład tworzy nowy tag wraz z kryterium, którym jest pierwsza pomyślna kopia zapasowa danego miesiąca. Tag ma taką samą nazwę jak odpowiednia reguła przechowywania, która ma zostać zastosowana.

W tym przykładzie kryteria tagu mają nazwę 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

Jeśli harmonogram obejmuje wiele kopii zapasowych tygodniowo (w każdą niedzielę, środę i czwartek, jak określono w poprzednim przykładzie) i chcesz zarchiwizować kopie zapasowe w niedzielę i piątek, możesz zmienić kryteria tagowania przy użyciu az dataprotection backup-policy tag create-generic-criteria polecenia :

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 az dataprotection backup-policy create polecenia , 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 rozważyć trzy istotne kwestie zanim przystąpi się do tworzenia kopii zapasowej bazy danych PostgreSQL w usłudze Azure Database for PostgreSQL.

Omówienie kluczowych jednostek

Baza danych PostgreSQL do utworzenia kopii zapasowej

Pobierz identyfikator usługi Resource Manager bazy danych PostgreSQL do utworzenia kopii zapasowej. Ten identyfikator służy jako identyfikator bazy danych. W poniższym przykładzie użyto bazy danych o nazwie empdb11 na serwerze testposgresqlPostgreSQL, która znajduje się w grupie ossrg zasobów w ramach innej subskrypcji. Przykład używa Bash.

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

Repozytorium kluczy

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 umieszcza klucze w magazynie kluczy. Następnie usługa Azure Backup uzyskuje dostęp do magazynu kluczy, odczytuje klucze i uzyskuje dostęp do bazy danych.

Poniższy przykład używa Bash. Zanotuj tajny identyfikator odpowiedniego klucza.

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

Sejf 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. Dlatego magazyn usługi Backup wymaga dostępu do serwera PostgreSQL i magazynu kluczy. Przyznano dostęp do tożsamości zarządzanej skarbca kopii zapasowych.

Przeczytaj o uprawnieniach, które należy udzielić zarządzanej tożsamości magazynu kopii zapasowych na serwerze PostgreSQL i sklepie kluczy, który przechowuje klucze przechowywane w bazie danych.

Przygotowywanie żądania

Po ustawieniu wszystkich odpowiednich uprawnień wykonaj konfigurację kopii zapasowej w dwóch krokach:

  1. Przygotuj żądanie przy użyciu odpowiedniego magazynu, zasad i bazy danych PostgreSQL w poleceniu az dataprotection backup-instance initialize .
  2. Prześlij żądanie utworzenia kopii zapasowej bazy danych przy użyciu az dataprotection backup-instance create polecenia .
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 należy określić regułę przechowywania. Aby wyświetlić reguły przechowywania w zasadach, przejrzyj plik JSON zasad. W poniższym przykładzie istnieją dwie reguły przechowywania z nazwami Default i Monthly. W tym artykule jest używana reguła Monthly tworzenia 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 az dataprotection backup-instance adhoc-backup polecenia :

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

Monitorowanie prac

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

Możesz również użyć Az.ResourceGraph do śledzenia wszystkich zadań we wszystkich magazynach kopii zapasowych. Użyj polecenia az dataprotection job list-from-resourcegraph aby pobrać odpowiednie zadania z magazynów kopii zapasowych.

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