Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här artikeln beskrivs hur du säkerhetskopierar Azure Database for PostgreSQL med hjälp av Azure PowerShell. Du kan också konfigurera säkerhetskopiering med hjälp av Azure-portalen, Azure CLI och REST API för PostgreSQL-databaser.
Läs mer om scenarier som stöds och vanliga frågor och svar om hur du säkerhetskopierar PostgreSQL-databaser i Azure Database for PostgreSQL.
Skapa ett säkerhetskopieringsvalv
Ett Säkerhetskopieringsvalv är en lagringsentitet i Azure. Den lagrar säkerhetskopieringsdata för olika nya arbetsbelastningar som Azure Backup stöder, till exempel Azure Database for PostgreSQL-servrar, Azure-diskar och Azure-blobbar. Säkerhetskopieringsvalv hjälper dig att organisera dina säkerhetskopierade data, samtidigt som hanteringskostnaderna minimeras. Säkerhetskopieringsvalv baseras på Azure Resource Manager-modellen i Azure, som ger förbättrade funktioner för att skydda säkerhetskopierade data.
Innan du skapar ett Säkerhetskopieringsvalv väljer du lagringsredundans för data i valvet. Fortsätt sedan att skapa säkerhetskopieringsvalvet med lagringsredundansen och platsen.
I den här artikeln skapar du ett Backup-valv med namnet TestBkpVault, i westus regionen under resursgruppen testBkpVaultRG.
New-AzDataProtectionBackupVault Använd kommandot för att skapa ett säkerhetskopieringsvalv.
Läs mer om att skapa ett säkerhetskopieringsvalv.
$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
Skapa en säkerhetskopieringspolicy
När du har skapat ett valv kan du skapa en säkerhetskopieringsprincip för att skydda PostgreSQL-databaser. Du kan också skapa en säkerhetskopieringsprincip för PostgreSQL-databaser med hjälp av REST API.
Förstå säkerhetskopieringsprincipen för PostgreSQL
Medan säkerhetskopiering av diskar erbjuder flera säkerhetskopior per dag och blobsäkerhetskopiering är en kontinuerlig säkerhetskopiering utan utlösare, erbjuder PostgreSQL-säkerhetskopiering arkivskydd. De säkerhetskopierade data som först skickas till valvet kan flyttas till arkivnivån i enlighet med en definierad regel eller en livscykel.
I det här sammanhanget kan följande hierarki hjälpa dig att förstå säkerhetskopieringsprincipobjektet för PostgreSQL:
- Principregel
- Säkerhetskopieringsregel
- Parameter för säkerhetskopiering
- Typ av säkerhetskopiering (en fullständig databassäkerhetskopia i det här fallet)
- Initialt datalager (där säkerhetskopiorna hamnar initialt)
- Utlösare (hur säkerhetskopieringen utlöses)
- Schema
- Standardvillkor för taggning (en standardtagg som länkar alla schemalagda säkerhetskopior till kvarhållningsregeln)
- Parameter för säkerhetskopiering
- Standardregel för kvarhållning (en regel som tillämpas på alla säkerhetskopior som standard i det första dataarkivet)
- Säkerhetskopieringsregel
Principobjektet definierar vilka typer av säkerhetskopior som utlöses, hur de utlöses (via ett schema), vad de taggas med, var de hamnar (ett datalager) och livscykeln för deras data i ett datalager.
Standardobjektet för PowerShell för PostgreSQL säger att det utlöser en fullständig säkerhetskopia varje vecka. Säkerhetskopiorna når valvet, där de lagras i tre månader.
Om du vill lägga till arkivnivån i principen måste du bestämma när data ska flyttas från valvet till arkivet, hur länge data ska finnas kvar i arkivet och vilka av de schemalagda säkerhetskopiorna som ska taggas som arkiveringsbara. Du måste lägga till en kvarhållningsregel som definierar livscykeln för säkerhetskopieringsdata från valvets datalager till arkivdatalagringen. Kvarhållningsregeln definierar också hur länge säkerhetskopierade data ska lagras i arkivdatalagringen. Sedan måste du lägga till en tagg som markerar de schemalagda säkerhetskopiorna som berättigade att arkiveras.
Det resulterande PowerShell-objektet är följande:
- Principregel
- Säkerhetskopieringsregel
- Parameter för säkerhetskopiering
- Typ av säkerhetskopiering (en fullständig databassäkerhetskopia i det här fallet)
- Initialt datalager (där säkerhetskopiorna hamnar initialt)
- Utlösare (hur säkerhetskopieringen utlöses)
- Schema
- Standardvillkor för taggning (en standardtagg som länkar alla schemalagda säkerhetskopior till kvarhållningsregeln)
- Nya taggningsvillkor för den nya kvarhållningsregeln med samma namn
- Parameter för säkerhetskopiering
- Standardregel för kvarhållning (en regel som tillämpas på alla säkerhetskopior som standard i det första dataarkivet)
- Ny kvarhållningsregel
- Livscykel
- Källdatalager
- Tidsperiod för borttagning i källdatalagringen
- Kopiera till måldatalagringen
- Livscykel
- Säkerhetskopieringsregel
Hämta policymallen
Om du vill förstå de inre komponenterna i en säkerhetskopieringsprincip för PostgreSQL-databassäkerhetskopiering hämtar du principmallen med hjälp Get-AzDataProtectionPolicyTemplate av kommandot . Det här kommandot returnerar standardprincipmallen för en datakällstyp. Använd den här principmallen för att skapa en ny princip.
$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
Principmallen består av en utlösare (som bestämmer vad som utlöser säkerhetskopieringen) och en livscykel (som bestämmer när säkerhetskopieringen ska tas bort, kopieras eller flyttas). I en PostgreSQL-databassäkerhetskopia är standardvärdet för utlösaren en schemalagd veckoutlösare (en säkerhetskopia var sjunde dag). Varje säkerhetskopia behålls i tre månader.
$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 : {}
Ändra principmallen
Ändra schemat
Standardprincipmallen erbjuder en säkerhetskopia en gång i veckan. Du kan ändra schemat för att säkerhetskopieringen ska ske flera dagar i veckan. Om du vill ändra schemat använder du Edit-AzDataProtectionPolicyTriggerClientObject kommandot .
I följande exempel ändras den veckovisa säkerhetskopieringen till söndag, onsdag och fredag varje vecka. Schemadatummatrisen anger datumen och veckodagarna för dessa datum tas som veckodagar. Du måste också ange att dessa scheman ska upprepas varje vecka. Schemaintervallet är 1 alltså och intervalltypen är 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
Lägga till en ny kvarhållningsregel
Om du vill lägga till arkivskydd måste du ändra principmallen.
Standardmallen har en livscykel för det första dataarkivet under standardregeln för kvarhållning. I det här scenariot säger regeln att du ska ta bort säkerhetskopierade data efter tre månader. Du bör lägga till en ny kvarhållningsregel som definierar när data flyttas till arkivdatalagringen. Säkerhetskopierade data kopieras först till arkivdataarkivet och tas sedan bort i valvets datalager.
Regeln bör också definiera hur länge data ska lagras i arkivdatalagringen. Använd kommandot för New-AzDataProtectionRetentionLifeCycleClientObject att skapa nya livscykeler. Använd kommandot för att associera dessa livscykeler med nya eller befintliga regler Edit-AzDataProtectionPolicyRetentionRuleClientObject .
I följande exempel skapas en ny kvarhållningsregel med namnet Monthly. I den här regeln behålls den första lyckade säkerhetskopieringen varje månad i valvet i sex månader, flyttas till arkivnivån och sparas på arkivnivån i 24 månader.
$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
Lägga till en tagg och relevanta villkor
När du har skapat en kvarhållningsregel måste du skapa en motsvarande tagg i Trigger egenskapen för säkerhetskopieringsprincipen. Använd kommandot för New-AzDataProtectionPolicyTagCriteriaClientObject att skapa nya taggningsvillkor. Om du vill uppdatera den befintliga taggen eller skapa en ny tagg använder du kommandot Edit-AzDataProtectionPolicyTagClientObject .
I följande exempel skapas en ny tagg tillsammans med kriterierna, vilket är den första lyckade säkerhetskopieringen i månaden. Taggen har samma namn som den motsvarande kvarhållningsregel som ska tillämpas.
I det här exemplet heter Monthlytaggvillkoren :
$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -AbsoluteCriteria FirstOfMonth
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria
Om schemat är flera säkerhetskopior per vecka (varje söndag, onsdag och torsdag, enligt föregående exempel) och du vill arkivera säkerhetskopieringarna söndag och fredag, kan du ändra taggningskriterierna på följande sätt:
$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -DaysOfWeek @("Sunday", "Friday")
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria
Skapa en ny backup-policy för PostgreSQL
När du har ändrat mallen enligt kraven använder du New-AzDataProtectionBackupPolicy kommandot för att skapa en princip med hjälp av den ändrade mallen:
$polOss = New-AzDataProtectionBackupPolicy -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Name "TestOSSPolicy" -Policy $policyDefn
Konfigurera säkerhetskopiering
När du har skapat valvet och principen måste du överväga tre viktiga punkter för att säkerhetskopiera en PostgreSQL-databas i Azure Database for PostgreSQL.
Förstå viktiga entiteter
PostgreSQL-databas som ska säkerhetskopieras
Hämta Resource Manager-ID:t för PostgreSQL-databasen som ska säkerhetskopieras. Det här ID:t fungerar som identifierare för databasen. I följande exempel används en databas med namnet empdb11 under PostgreSQL-servern testposgresql, som finns i resursgruppen ossrg under en annan prenumeration:
$ossId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/servers/archive-postgresql-ccy/databases/empdb11"
Nyckelvalv (Key vault)
Azure Backup-tjänsten lagrar inte användarnamnet och lösenordet för att ansluta till PostgreSQL-databasen. I stället frön säkerhetskopieringsadministratören nycklarna till nyckelvalvet. Azure Backup-tjänsten kommer sedan åt nyckelvalvet, läser nycklarna och kommer åt databasen. Anteckna den relevanta nyckelns hemliga identifierare.
$keyURI = "https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"
Säkerhetskopieringsvalv
Du måste ansluta Backup-valvet till PostgreSQL-servern och sedan komma åt databasen via nycklarna som finns i nyckelvalvet. Säkerhetskopieringsvalvet kräver därför åtkomst till PostgreSQL-servern och nyckelvalvet. Åtkomst beviljas till Säkerhetskopieringsvalvets hanterade identitet.
Läs mer om lämpliga behörigheter som du bör bevilja säkerhetskopieringsvalvets hanterade identitet på PostgreSQL-servern och Azure Key Vault, där nycklarna till databasen lagras.
Förbereda begäran
När du har angett alla relevanta behörigheter utför du konfigurationen av säkerhetskopian i två steg:
- Förbered begäran med hjälp av relevant valv, princip och PostgreSQL-databas i
Initialize-AzDataProtectionBackupInstancekommandot . - Skicka begäran om att säkerhetskopiera databasen med hjälp
New-AzDataProtectionBackupInstanceav kommandot .
$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
Köra en säkerhetskopiering på begäran
Hämta den relevanta säkerhetskopieringsinstansen där du behöver utlösa en säkerhetskopia med hjälp Get-AzDataProtectionBackupInstance av kommandot :
$instance = Get-AzDataProtectionBackupInstance -SubscriptionId "xxxx-xxx-xxx" -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "BackupInstanceName"
Du kan ange en kvarhållningsregel när du utlöser en säkerhetskopia. För att visa kvarhållningsreglerna i en princip, bläddra igenom principobjektet. I följande exempel visas regeln med namnet Default . Den här artikeln använder den exempelregeln för säkerhetskopiering på begäran.
$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
Använd kommandot för att utlösa en säkerhetskopiering Backup-AzDataProtectionBackupInstanceAdhoc på begäran:
$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $AllInstances[0].Name -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupRuleOptionRuleName "Default"
Spåra uppgifter
Spåra alla jobb med hjälp av Get-AzDataProtectionJob kommandot. Du kan visa en lista över alla jobb och hämta en viss jobbinformation.
Du kan också använda Az.ResourceGraph för att spåra alla jobb i alla säkerhetskopieringsvalv.
Search-AzDataProtectionJobInAzGraph Använd kommandot för att hämta relevanta jobb i alla Säkerhetskopieringsvalv:
$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureDisk -Operation OnDemandBackup
Relaterat innehåll
- Återställa en PostgreSQL-databas med Hjälp av Azure PowerShell.
- Återställa en PostgreSQL-databas med hjälp av Azure-portalen, Azure CLI och REST API.
- Hantera en Azure Database for PostgreSQL-server med hjälp av Azure-portalen.