Sdílet prostřednictvím


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

Tento článek popisuje, jak zálohovat službu Azure Database for PostgreSQL pomocí Azure PowerShellu. Zálohování můžete nakonfigurovat také pomocí webu Azure Portal, Azure CLI a rozhraní REST API pro databáze PostgreSQL.

Přečtěte si další informace o podporovaných scénářích a nejčastějších dotazech k zálohování databází PostgreSQL ve službě Azure Database for PostgreSQL.

Vytvoření úložiště záloh

Zálohovací trezor je úložná entita v Azure. Ukládá zálohovaná data pro různé nové úlohy, které Azure Backup podporuje, jako jsou servery Azure Database for PostgreSQL, disky Azure a objekty blob 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. Pokračujte vytvořením úložiště záloh s danou redundancí úložiště a umístěním.

V tomto článku vytvoříte trezor služby Backup s názvem TestBkpVault v oblasti westus pod skupinou prostředků testBkpVaultRG. Pomocí příkazu New-AzDataProtectionBackupVault vytvořte úložiště záloh. Zjistěte více o vytváření trezoru záloh.

$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

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

Po vytvoření trezoru můžete vytvořit zásadu zálohování, která pomáhá chránit databáze PostgreSQL. Zásady zálohování pro databáze PostgreSQL můžete vytvořit také pomocí rozhraní REST API.

Vysvětlení zásad zálohování PostgreSQL

Zatímco zálohování disků nabízí více záloh za den a zálohování objektů blob je průběžné zálohování bez triggeru, zálohování PostgreSQL nabízí ochranu archivu. Zálohovaná data, která jsou poprvé odeslána do trezoru, lze přesunout do archivní úrovně podle definovaného pravidla nebo životního cyklu.

V tomto kontextu vám následující hierarchie může pomoct pochopit objekt zásad zálohování pro PostgreSQL:

  • Zásadní pravidlo
    • Pravidlo zálohování
      • Parametr zálohování
        • Typ zálohování (v tomto případě úplné zálohování databáze)
        • Počáteční úložiště dat (kde se zálohy nejprve uloží)
        • Aktivační událost (jak se aktivuje zálohování)
          • Rozvrh
          • Výchozí kritéria označování (výchozí značka, která provází všechny naplánované zálohy s pravidlem uchovávání informací)
    • Výchozí pravidlo uchovávání informací (pravidlo použité pro všechny zálohy ve výchozím nastavení v počátečním úložišti dat)

Objekt zásady definuje, jaké typy záloh se aktivují, jak se aktivují (prostřednictvím plánu), co jsou označené, kde se nacházejí (úložiště dat) a životní cyklus dat v úložišti dat.

Výchozí objekt PowerShellu pro PostgreSQL říká, že se má aktivovat úplné zálohování každý týden. Zálohy se dostanou do trezoru, kde jsou uloženy na 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 budou data v archivu a která z plánovaných záloh by se měla označit jako archivovatelná. Musíte přidat pravidlo uchovávání, které definuje životní cyklus zálohovaných dat z úložiště dat trezoru do archivního úložiště dat. Pravidlo uchovávání informací také definuje, jak dlouho budou zálohovaná data zůstat v archivačním úložišti dat. Pak musíte přidat značku, která označí naplánované zálohy jako způsobilé k archivaci.

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

  • Zásadní pravidlo
    • Pravidlo zálohování
      • Parametr zálohování
        • Typ zálohování (v tomto případě úplné zálohování databáze)
        • Počáteční úložiště dat (kde se zálohy nejprve uloží)
        • Aktivační událost (jak se aktivuje zálohování)
          • Rozvrh
          • Výchozí kritéria označování (výchozí značka, která provází všechny naplánované zálohy s pravidlem uchovávání informací)
          • Nová kritéria označování pro nové pravidlo uchovávání informací se stejným názvem
    • Výchozí pravidlo uchovávání informací (pravidlo použité pro všechny zálohy ve výchozím nastavení v počátečním úložišti dat)
    • Nové pravidlo uchovávání informací
      • Životní cyklus
        • Úložiště zdrojových dat
        • Časové období pro odstranění ve zdrojovém úložišti dat
        • Kopírování do cílového úložiště dat

Načtěte šablonu zásad

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

$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

Šablona zásady 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 PostgreSQL je výchozí hodnota triggeru naplánovaná týdenní aktivační událost (jedna záloha každých 7 dnů). Každá záloha se uchovává po dobu tří měsíců.

 $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 : {}

Úprava šablony zásad

Ú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 změnit plán, použijte Edit-AzDataProtectionPolicyTriggerClientObject příkaz.

Následující příklad upraví týdenní zálohování na neděli, středu a pátek každého týdne. Pole s plánovanými daty uvádí kalendářní data a dny v týdnu pro tato data se považují za dny v týdnu. Musíte také určit, že by se tyto plány měly opakovat každý týden. Takže interval plánu je 1 a typ intervalu je 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   

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

Pokud chcete přidat ochranu archivu, musíte upravit šablonu zásad.

Výchozí šablona má životní cyklus pro počáteční ú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. To znamená, že záloha se nejprve zkopíruje do archivu úložiště dat a poté se odstraní v trezoru.

Pravidlo by také mělo definovat, jak dlouho se mají data uchovávat v archivačním úložišti dat. K vytvoření nových životních cyklů použijte New-AzDataProtectionRetentionLifeCycleClientObject příkaz. Pokud chcete tyto životní cykly přidružit k novým nebo existujícím pravidlům, použijte Edit-AzDataProtectionPolicyRetentionRuleClientObject tento příkaz.

Následující příklad vytvoří nové pravidlo uchovávání informací s názvem Monthly. V tomto pravidle se první úspěšná záloha každého měsíce uchovává v trezoru po dobu šesti měsíců, přesune se do archivní úrovně a zůstane v archivní vrstvě po dobu 24 měsíců.

$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

Přidejte značku a relevantní kritéria

Po vytvoření pravidla uchovávání informací musíte vytvořit odpovídající značku ve Trigger vlastnosti zásady zálohování. Pokud chcete vytvořit nová kritéria označování, použijte New-AzDataProtectionPolicyTagCriteriaClientObject tento příkaz. Pokud chcete aktualizovat existující značku nebo vytvořit novou značku, použijte příkaz Edit-AzDataProtectionPolicyTagClientObject .

Následující příklad vytvoří novou značku spolu s kritérii, což je první úspěšná záloha 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 jsou kritéria značky pojmenována Monthly:

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

Pokud je plán více záloh za týden (každou neděli, středu a čtvrtek, jak je uvedeno v předchozím příkladu) a chcete archivovat zálohy v neděli a pátek, můžete kritéria označování změnit takto:

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

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

Po úpravě šablony podle požadavků pomocí New-AzDataProtectionBackupPolicy příkazu vytvořte zásadu pomocí upravené šablony:

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

Konfigurace zálohování

Po vytvoření trezoru a zásad je potřeba zvážit tři kritické body pro zálohování databáze PostgreSQL ve službě Azure Database for PostgreSQL.

Pochopte klíčové entity

Databáze PostgreSQL, která se má zálohovat

Načtěte ID Resource Manageru databáze PostgreSQL, které se má zálohovat. Toto ID slouží jako identifikátor databáze. Následující příklad používá databázi pojmenovanou empdb11 pod serverem testposgresqlPostgreSQL, která se nachází ve skupině ossrg prostředků v jiném předplatném:

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

Úložiště klíčů

Služba Azure Backup neukládá uživatelské jméno a heslo pro připojení k databázi PostgreSQL. Správce zálohování místo toho vloží klíče do trezoru klíčů. Služba Azure Backup pak přistupuje k trezoru klíčů, přečte klíče a přistupuje k databázi. Poznamenejte si tajný identifikátor příslušného klíče.

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

Zálohovací trezor

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

Přečtěte si o příslušných oprávněních , která byste měli udělit spravované identitě trezoru služby Backup na serveru PostgreSQL a službě Azure Key Vault, kde jsou uložené klíče k databázi.

Příprava požadavku

Po nastavení všech příslušných oprávnění proveďte konfiguraci zálohování ve dvou krocích:

  1. Připravte požadavek pomocí příslušného trezoru, zásad a databáze PostgreSQL v příkazu Initialize-AzDataProtectionBackupInstance.
  2. Pomocí příkazu odešlete žádost o zálohování databáze New-AzDataProtectionBackupInstance .
$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

Provedení zálohování na vyžádání

Pomocí příkazu Get-AzDataProtectionBackupInstance načtěte příslušnou instanci zálohování, pro kterou potřebujete provést zálohování.

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

Při aktivaci zálohování můžete zadat pravidlo uchovávání informací. Pokud chcete zobrazit pravidla uchovávání informací v zásadách, projděte si objekt zásad. V následujícím příkladu se zobrazí pravidlo s názvem Default . Tento článek používá toto ukázkové pravidlo pro zálohování na vyžádání.

$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

Pokud chcete aktivovat zálohování na vyžádání, použijte tento Backup-AzDataProtectionBackupInstanceAdhoc příkaz:

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

Sledovat práce

Sledujte všechny úlohy pomocí příkazu Get-AzDataProtectionJob. Můžete zobrazit seznam všech úloh a načíst konkrétní podrobnosti úlohy.

Můžete také použít Az.ResourceGraph ke sledování všech úloh ve všech trezorech služby Backup. Search-AzDataProtectionJobInAzGraph Pomocí příkazu načtěte relevantní úlohy napříč jakýmkoli trezorem služby Backup:

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