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.
Den här artikeln beskriver hur du säkerhetskopierar PostgreSQL-databaser i Azure Virtual Machines med hjälp av Azure CLI. Du kan också konfigurera säkerhetskopiering med hjälp av Azure-portalen, Azure PowerShell och REST API för PostgreSQL-databaser.
Läs mer om scenarier som stöds och vanliga frågor om säkerhetskopiering av Azure Database for PostgreSQL.
Skapa ett säkerhetskopieringsvalv
Ett Säkerhetskopieringsvalv är en lagringsentitet i Azure. Den lagrar säkerhetskopieringsdata för nya arbetsbelastningar som Azure Backup stöder, till exempel Azure Database for PostgreSQL-servrar, blobar i ett lagringskonto och Azure-diskar. 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.
az dataprotection vault create Använd kommandot för att skapa ett säkerhetskopieringsvalv.
Läs mer om att skapa ett säkerhetskopieringsvalv.
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"
}
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 az dataprotection backup-policy get-default-policy-template 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.
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"
}
]
}
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 säkerhetskopia av en PostgreSQL-databas är standardvärdet för triggern en schemalagd veckotrigger (en säkerhetskopia var sjunde dag). Varje säkerhetskopia behålls i tre månader.
Schemalagd utlösare
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T06:30:00+00:00/P1W"
],
"timeZone": "UTC"
}
Standardlivscykel för kvarhållningsregeln
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
Ändra principmallen
I Azure PowerShell kan du använda objekt som mellanlagringsplatser för att utföra alla ändringar. I Azure CLI måste du använda filer eftersom det inte finns någon uppfattning om objekt. Varje redigeringsåtgärd ska omdirigeras till en ny fil, där innehållet läses från indatafilen och skickas till utdatafilen. Du kan senare byta namn på filen efter behov när du använder den i ett skript.
Ä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 az dataprotection backup-policy trigger set 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.
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
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 arkivlagringsplatsen och sedan tas de bort från valvets lagringsområde.
Regeln bör också definiera hur länge data ska lagras i arkivdatalagringen. Använd kommandot az dataprotection backup-policy retention-rule create-lifecycle för att skapa nya livscykler. Använd kommandot för att associera dessa livscykeler med nya eller befintliga regler az dataprotection backup-policy retention-rule set .
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.
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
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 az dataprotection backup-policy tag create-absolute-criteria för att skapa nya taggningskriterier. Om du vill uppdatera den befintliga taggen eller skapa en ny tagg använder du az dataprotection backup-policy tag set kommandot .
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 :
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
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 med hjälp az dataprotection backup-policy tag create-generic-criteria av kommandot :
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
Skapa en ny säkerhetskopieringspolicy för PostgreSQL
När du har ändrat mallen enligt kraven använder du az dataprotection backup-policy create kommandot för att skapa en princip med hjälp av den ändrade mallen:
az dataprotection backup-policy create --backup-policy-name FinalOSSPolicy --policy AddedRetentionRuleAndTag.JSON --resource-group testBkpVaultRG --vault-name TestBkpVault
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. I exemplet används Bash.
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 placerar säkerhetskopieringsadministratören nycklarna i nyckelvalvet. Azure Backup-tjänsten kommer sedan åt nyckelvalvet, läser nycklarna och kommer åt databasen.
I följande exempel används Bash. Anteckna den relevanta nyckelns hemliga identifierare.
keyURI="https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"
Säkerhetskopieringsvalv
Ett Backup-valv måste ansluta 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 om de behörigheter som du bör bevilja säkerhetskopieringsvalvets hanterade identitet på PostgreSQL-servern och nyckelvalvet som lagrar nycklarna till databasen.
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 kommandot
az dataprotection backup-instance initialize. - Skicka begäran om att säkerhetskopiera databasen med hjälp
az dataprotection backup-instance createav kommandot .
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
Köra en säkerhetskopiering på begäran
Du måste ange en kvarhållningsregel när du utlöser säkerhetskopian. Om du vill visa kvarhållningsreglerna i en princip bläddrar du igenom princip-JSON-filen. I följande exempel finns det två kvarhållningsregler med namnen Default och Monthly. Den här artikeln använder Monthly regeln för säkerhetskopiering på begäran.
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"
}
Använd kommandot för att utlösa en säkerhetskopiering az dataprotection backup-instance adhoc-backup på begäran:
az dataprotection backup-instance adhoc-backup --name "ossrg-empdb11" --rule-name "Monthly" --resource-group testBkpVaultRG --vault-name TestBkpVault
Spåra arbeten
Spåra alla jobb med hjälp av az dataprotection job list 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. Använd kommandot az dataprotection job list-from-resourcegraph för att hämta relevanta jobb i Backupvalv:
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --status Completed
Relaterat innehåll
- Återställ PostgreSQL-databaser med hjälp av Azure CLI.
- Återställa en PostgreSQL-databas med hjälp av Azure-portalen, Azure PowerShell och REST API.
- Hantera en Azure Database for PostgreSQL-server med hjälp av Azure-portalen.