Udostępnij za pomocą


Tworzenie kopii zapasowych baz danych PostgreSQL przy użyciu programu Azure PowerShell

W tym artykule opisano sposób tworzenia kopii zapasowej usługi Azure Database for PostgreSQL przy użyciu programu Azure PowerShell. Możesz również skonfigurować tworzenie kopii zapasowych przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure 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 zapasowych baz danych PostgreSQL w usłudze Azure Database for PostgreSQL.

Tworzenie magazynu kopii zapasowych

Magazyn usługi Backup to jednostka magazynu na platformie Azure. Przechowuje dane kopii zapasowej dla różnych nowych obciążeń obsługiwanych przez usługę Azure Backup, takich jak serwery usługi Azure Database for PostgreSQL, dyski platformy Azure i obiekty blob platformy Azure. Magazyny kopii zapasowych pomagają organizować dane zapasowe, minimalizując jednocześnie obciążenie zarządzania. 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 skarbca kopii zapasowych wybierz nadmiarowość magazynowania danych w skarbcu. Następnie przejdź do utworzenia magazynu kopii zapasowych z uwzględnieniem nadmiarowości pamięci masowej i lokalizacji.

W tym artykule utworzysz magazyn usługi Backup o nazwie TestBkpVault, w westus regionie w grupie testBkpVaultRGzasobów . Użyj polecenia , New-AzDataProtectionBackupVault aby utworzyć magazyn kopii zapasowych. Dowiedz się więcej o tworzeniu magazynu kopii zapasowych.

$storageSetting = New-AzDataProtectionBackupVaultStorageSettingObject -Type LocallyRedundant/GeoRedundant -DataStoreType VaultStore
New-AzDataProtectionBackupVault -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Location westus -StorageSetting $storageSetting
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault
$TestBKPVault | fl
ETag                :
Id                  : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault
Identity            : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppIdentityDetails
IdentityPrincipalId :
IdentityTenantId    :
IdentityType        :
Location            : westus
Name                : TestBkpVault
ProvisioningState   : Succeeded
StorageSetting      : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.StorageSetting}
SystemData          : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SystemData
Tag                 : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppTrackedResourceTags
Type                : Microsoft.DataProtection/backupVaults

Tworzenie zasad kopii zapasowych

Po utworzeniu magazynu można utworzyć zasady tworzenia kopii zapasowych, aby ułatwić ochronę baz 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 tworzenie kopii zapasowych 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 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 Get-AzDataProtectionPolicyTemplate polecenia . To polecenie zwraca domyślny szablon zasad dla typu źródła danych. Użyj tego szablonu zasad, aby utworzyć nowe zasady.

$policyDefn = Get-AzDataProtectionPolicyTemplate -DatasourceType AzureDatabaseForPostgreSQL
$policyDefn | fl


DatasourceType : {Microsoft.DBforPostgreSQL/servers/databases}
ObjectType     : BackupPolicy
PolicyRule     : {BackupWeekly, Default}

$policyDefn.PolicyRule | fl


BackupParameter           : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.AzureBackupParams
BackupParameterObjectType : AzureBackupParams
DataStoreObjectType       : DataStoreInfoBase
DataStoreType             : VaultStore
Name                      : BackupWeekly
ObjectType                : AzureBackupRule
Trigger                   : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.ScheduleBasedTriggerCo
                            ntext
TriggerObjectType         : ScheduleBasedTriggerContext

IsDefault  : True
Lifecycle  : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.SourceLifeCycle}
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 wartość domyślna wyzwalacza to zaplanowany co tydzień wyzwalacz (jedna kopia zapasowa co siedem dni). Każda kopia zapasowa jest przechowywana przez trzy miesiące.

 $policyDefn.PolicyRule[0].Trigger | fl


ObjectType                    : ScheduleBasedTriggerContext
ScheduleRepeatingTimeInterval : {R/2021-08-22T02:00:00+00:00/P1W}
ScheduleTimeZone              : UTC
TaggingCriterion              : {Default}
$policyDefn.PolicyRule[1].Lifecycle | fl


DeleteAfterDuration        : P3M
DeleteAfterObjectType      : AbsoluteDeleteOption
SourceDataStoreObjectType  : DataStoreInfoBase
SourceDataStoreType        : VaultStore
TargetDataStoreCopySetting : {}

Modyfikowanie szablonu zasad

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 zmienić harmonogram, użyj Edit-AzDataProtectionPolicyTriggerClientObject polecenia .

Poniższy przykład modyfikuje cotygodniową kopię zapasową do niedzieli, środy i piątku każdego tygodnia. Tablica dat harmonogramu zawiera daty, a dni tygodnia są traktowane 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.

$schDates = @(
  (
    (Get-Date -Year 2021 -Month 08 -Day 15 -Hour 22 -Minute 0 -Second 0)
  ), 
  (
    (Get-Date -Year 2021 -Month 08 -Day 18 -Hour 22 -Minute 0 -Second 0)
  ),
  (
    (Get-Date -Year 2021 -Month 08 -Day 20 -Hour 22 -Minute 0 -Second 0)
  )
)
$trigger = New-AzDataProtectionPolicyTriggerScheduleClientObject -ScheduleDays $schDates -IntervalType Weekly -IntervalCount 1 
Edit-AzDataProtectionPolicyTriggerClientObject -Schedule $trigger -Policy $policyDefn   

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 New-AzDataProtectionRetentionLifeCycleClientObject polecenia . Aby skojarzyć te cykle życia z nowymi lub istniejącymi regułami, użyj Edit-AzDataProtectionPolicyRetentionRuleClientObject 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.

$VaultToArchiveLifeCycle = New-AzDataProtectionRetentionLifeCycleClientObject -SourceDataStore VaultStore -SourceRetentionDurationType Months -SourceRetentionDurationCount 6 -TargetDataStore ArchiveStore -CopyOption CopyOnExpiryOption

$OnArchiveLifeCycle = New-AzDataProtectionRetentionLifeCycleClientObject -SourceDataStore ArchiveStore -SourceRetentionDurationType Months -SourceRetentionDurationCount 24

Edit-AzDataProtectionPolicyRetentionRuleClientObject -Policy $policyDefn -Name Monthly -LifeCycles $VaultToArchiveLifeCycle, $OnArchiveLifeCycleLifeCycle -IsDefault $false

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 New-AzDataProtectionPolicyTagCriteriaClientObject polecenia . Aby zaktualizować istniejący tag lub utworzyć nowy tag, użyj polecenia Edit-AzDataProtectionPolicyTagClientObject .

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:

$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -AbsoluteCriteria FirstOfMonth
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria

Jeśli harmonogram obejmuje wiele kopii zapasowych tygodniowo (każda niedziela, środa i czwartek, jak określono w poprzednim przykładzie) i chcesz zarchiwizować kopie zapasowe w niedzielę i piątek, możesz zmienić kryteria tagowania w następujący sposób:

$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -DaysOfWeek @("Sunday", "Friday")
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria

Tworzenie nowych zasad tworzenia kopii zapasowych bazy danych PostgreSQL

Po zmodyfikowaniu szablonu zgodnie z wymaganiami użyj New-AzDataProtectionBackupPolicy polecenia , aby utworzyć zasady przy użyciu zmodyfikowanego szablonu:

$polOss = New-AzDataProtectionBackupPolicy -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Name "TestOSSPolicy" -Policy $policyDefn

Konfigurowanie kopii zapasowych

Po utworzeniu magazynu i zasad należy rozważyć trzy krytyczne punkty, aby utworzyć kopię zapasową 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:

$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. Zanotuj tajny identyfikator odpowiedniego klucza.

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

Sejf kopii zapasowych

Musisz połączyć magazyn usługi Backup 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 odpowiednich uprawnieniach , które należy udzielić tożsamości zarządzanej magazynu usługi Backup na serwerze PostgreSQL i usłudze Azure Key Vault, gdzie są przechowywane klucze do bazy 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 Initialize-AzDataProtectionBackupInstance .
  2. Prześlij żądanie utworzenia kopii zapasowej bazy danych przy użyciu New-AzDataProtectionBackupInstance polecenia .
$instance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureDatabaseForPostgreSQL -DatasourceLocation $TestBkpvault.Location -PolicyId $polOss[0].Id -DatasourceId $ossId -SecretStoreURI $keyURI -SecretStoreType AzureKeyVault
ConvertTo-Json -InputObject $instance -Depth 4 
New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $instance

Name                        Type                                         BackupInstanceName
----                        ----                                          ------------------
ossrg-empdb11       Microsoft.DataProtection/backupVaults/backupInstances ossrg-empdb11

Uruchamianie tworzenia kopii zapasowej na żądanie

Pobierz odpowiednie wystąpienie kopii zapasowej, na którym chcesz wykonać kopię zapasową, za pomocą polecenia Get-AzDataProtectionBackupInstance.

$instance = Get-AzDataProtectionBackupInstance -SubscriptionId "xxxx-xxx-xxx" -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "BackupInstanceName"

Regułę przechowywania można określić podczas wyzwalania kopii zapasowej. Aby wyświetlić reguły przechowywania w zasadach, przejrzyj obiekt zasad. W poniższym przykładzie zostanie wyświetlona reguła o nazwie Default . W tym artykule użyto tej przykładowej reguły dla kopii zapasowej na żądanie.

$ossPol.PolicyRule | fl


BackupParameter           : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.AzureBackupParams
BackupParameterObjectType : AzureBackupParams
DataStoreObjectType       : DataStoreInfoBase
DataStoreType             : OperationalStore
Name                      : BackupHourly
ObjectType                : AzureBackupRule
Trigger                   : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.ScheduleBasedTriggerContext
TriggerObjectType         : ScheduleBasedTriggerContext

IsDefault  : True
Lifecycle  : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SourceLifeCycle}
Name       : Default
ObjectType : AzureRetentionRule

Aby wyzwolić kopię zapasową na żądanie, użyj Backup-AzDataProtectionBackupInstanceAdhoc polecenia :

$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $AllInstances[0].Name -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupRuleOptionRuleName "Default"

Śledzenie zadań

Śledź wszystkie zadania przy użyciu Get-AzDataProtectionJob 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 Search-AzDataProtectionJobInAzGraph aby pobrać odpowiednie zadania w dowolnym magazynie kopii zapasowych.

  $job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureDisk -Operation OnDemandBackup