Dela via


Säkerhetskopiera Azure PostgreSQL-databaser med Azure CLI

Den här artikeln beskriver hur du säkerhetskopierar Azure PostgreSQL-databasen med hjälp av Azure CLI.

I den här artikeln får du lära dig att:

  • Skapa ett säkerhetskopieringsvalv
  • Skapa en säkerhetskopieringspolicy
  • Konfigurera en säkerhetskopia av en Azure PostgreSQL-databas
  • Kör ett säkerhetskopieringsjobb på begäran

Information om informgreSQL-databaser som stöds scenarier och begränsningar finns i supportmatrisen.

Skapa ett säkerhetskopieringsvalv

Backup Vault är en lagringsentitet i Azure. Detta lagrar säkerhetskopieringsdata för nya arbetsbelastningar som Stöds av Azure Backup. Till exempel Azure Database for PostgreSQL-servrar, blobar i ett lagringskonto och Azure Disks. 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 vi ett TestBkpVault för säkerhetskopieringsvalvet i regionen westus under resursgruppen testBkpVaultRG. Använd kommandot az dataprotection vault create 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": "2ca1d5f7-38b3-4b61-aa45-8147d7e0edbc",
    "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"
}

När valvet har skapats ska vi skapa en säkerhetskopieringsprincip för att skydda Azure PostgreSQL-databaser.

Skapa en säkerhetskopieringsprincip

Förstå säkerhetskopieringsprincip för PostGreSQL

Även om 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 sedan flyttas till arkivnivån enligt en definierad regel eller en livscykel. I det här sammanhanget ska vi förstå säkerhetskopieringsprincipobjektet för PostgreSQL.

  • PolicyRule
    • BackupRule
      • BackupParameter
        • BackupType (en fullständig databassäkerhetskopia i det här fallet)
        • Initialt datalager (var kommer säkerhetskopiorna att landa från början)
        • Utlösare (hur säkerhetskopieringen utlöses)
          • Schemabaserat
          • Standardvillkor för taggning (en standardtagg för alla schemalagda säkerhetskopieringar. Den här taggen länkar säkerhetskopiorna till kvarhållningsregeln)
    • Standardregel för kvarhållning (en regel som ska tillämpas på alla säkerhetskopior, som standard, på det första dataarkivet)

Så det här objektet definierar vilken typ 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 säkerhetskopieringsdata i ett datalager. Standardobjektet för PowerShell för PostgreSQL säger att utlöser en fullständig säkerhetskopia varje vecka och att de 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 valv till arkiv, hur länge data ska finnas kvar i arkivet och vilka av de schemalagda säkerhetskopiorna som ska taggas som arkiveringsbara. Därför måste du lägga till en kvarhållningsregel, där livscykeln för säkerhetskopierade data definieras från valvdatalager till arkivdatalager och hur länge de stannar i arkivdatalagringen. Sedan behöver du lägga till en tagg som markerar de schemalagda säkerhetskopiorna som berättigade att arkiveras.

Det resulterande PowerShell-objektet är följande:

  • PolicyRule
    • BackupRule
      • BackupParameter
        • BackupType (en fullständig databassäkerhetskopia i det här fallet)
        • Initialt datalager (var kommer säkerhetskopiorna att landa från början)
        • Utlösare (hur säkerhetskopieringen utlöses)
          • Schemabaserat
          • Standardvillkor för taggning (en standardtagg för alla schemalagda säkerhetskopieringar. Den här taggen länkar säkerhetskopiorna till kvarhållningsregeln)
          • Nya taggningsvillkor för den nya kvarhållningsregeln med samma namn X
    • Standardregel för kvarhållning (en regel som ska tillämpas på alla säkerhetskopior, som standard, på det första dataarkivet)
    • En ny kvarhållningsregel med namnet "X"
      • Livscykel
        • Källdatalager
        • Ta bort efter tidsperiod i källdatalager
        • Kopiera till måldatalager

Hämta principmallen

Om du vill förstå de inre komponenterna i en säkerhetskopieringsprincip för Azure PostgreSQL-databassäkerhetskopiering hämtar du principmallen med kommandot az dataprotection backup-policy get-default-policy-template . Det här kommandot returnerar en standardprincipmall för en viss datakällatyp. 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/flyttas). I Azure PostgreSQL-databassäkerhetskopiering är standardvärdet för utlösaren en schemalagd veckoutlösare (en säkerhetskopiering var sjunde dag) och att behålla varje säkerhetskopia 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ållningsregel:

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

Ändra principmallen

Viktigt!

I Azure PowerShell kan objekt användas som mellanlagringsplatser för att utföra alla ändringar. I Azure CLI måste vi 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 dirigeras om till utdatafilen. Du kan senare byta namn på filen efter behov när du använder 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 kommandot az dataprotection backup-policy trigger set .

I följande exempel ändras den veckovisa säkerhetskopieringen så att säkerhetskopieringen sker varje 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 alltså 1 och intervalltypen är Veckovis.

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 arkivskyddet måste du ändra principmallen enligt nedan.

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 arkivdatalager, dvs. säkerhetskopierade data kopieras först till arkivdatalager och tas sedan bort i valvets datalager. Regeln bör också definiera hur länge data sparas i arkivdatalagringen. Använd kommandot az dataprotection backup-policy retention-rule create-lifecycle för att skapa nya livscykeler och använda kommandot az dataprotection backup-policy retention-rule set för att associera dem med de nya reglerna eller till de befintliga reglerna.

I följande exempel skapas en ny kvarhållningsregel med namnet Monthly, där den första lyckade säkerhetskopieringen varje månad ska behållas i valvet i sex månader, flyttas till arkivnivå och sparas på arkivnivå 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 en kvarhållningsregel har skapats måste du skapa en motsvarande tagg i egenskapen Utlösare för säkerhetskopieringsprincipen. Använd kommandot az dataprotection backup-policy tag create-absolute-criteria för att skapa ett nytt taggningsvillkor och använda kommandot az dataprotection backup-policy tag set för att uppdatera den befintliga taggen eller skapa en ny tagg.

I följande exempel skapas en ny tagg tillsammans med kriterierna, den första lyckade säkerhetskopieringen för månaden. Taggen har samma namn som den motsvarande kvarhållningsregel som ska tillämpas.

I det här exemplet ska taggvillkoren ha namnet Månadsvis.

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

Anta att om schemat är flera säkerhetskopior per vecka (varje söndag, onsdag, torsdag enligt ovanstående exempel) och du vill arkivera säkerhetskopieringarna söndag och fredag, kan taggningsvillkoren ändras på följande sätt med hjälp av kommandot az dataprotection backup-policy create-generic-criteria .

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 Princip för PostgreSQL-säkerhetskopiering

När mallen har ändrats enligt kraven använder du kommandot az dataprotection backup-policy create 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 valvet och principen har skapats finns det tre viktiga punkter som du måste överväga för att skydda en Azure PostgreSQL-databas.

Viktiga entiteter som berörs

PostGreSQL-databas som ska skyddas

Hämta Azure Resource Manager-ID (ARM-ID) för PostgreSQL som ska skyddas. Detta fungerar som identifierare för databasen. Vi använder ett exempel på en databas med namnet empdb11 under en PostgreSQL-servertestposgresql, som finns i resursgruppens ossrg under en annan prenumeration.

I följande exempel används bash.

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

Azure Key Vault

Azure Backup-tjänsten lagrar inte användarnamnet och lösenordet för att ansluta till PostgreSQL-databasen. I stället måste säkerhetskopieringsadministratören skicka nycklarna till nyckelvalvet. Sedan kommer säkerhetskopieringstjänsten att komma åt nyckelvalvet, läsa nycklarna och sedan komma åt databasen. Anteckna den relevanta nyckelns hemliga identifierare.

I följande exempel används bash.

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

Backup-valv

Säkerhetskopieringsvalvet måste ansluta till PostgreSQL-servern och sedan komma åt databasen via nycklarna som finns i nyckelvalvet. Därför krävs åtkomst till PostgreSQL-servern och nyckelvalvet. Åtkomst beviljas till Säkerhetskopieringsvalvets hanterade tjänstidentitet (MSI).

Se de behörigheter som du bör bevilja säkerhetskopieringsvalvets hanterade tjänstidentitet (MSI) på PostgreSQL-servern och Azure Key Vault som lagrar nycklar till databasen.

Förbereda begäran

När alla relevanta behörigheter har angetts utförs konfigurationen av säkerhetskopieringen i två steg.

  1. Vi förbereder relevant begäran med hjälp av relevant valv, princip, PostgreSQL-databas med kommandot az dataprotection backup-instance initialize .
  2. Vi skickar begäran om att skydda databasen med kommandot az dataprotection backup-instance create .
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äkerhetskopiering. Om du vill visa kvarhållningsreglerna i principen navigerar du genom JSON-principfilen för kvarhållningsregler. I följande exempel finns det två kvarhållningsregler med namnen Default och Monthly. Vi använder månadsregeln 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"
}

Om du vill utlösa en säkerhetskopiering på begäran använder du kommandot az dataprotection backup-instance adhoc-backup .

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

Spåra jobb

Spåra alla jobb med kommandot az dataprotection job list . 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 Backup-valv. Använd kommandot az dataprotection job list-from-resourcegraph för att hämta relevanta jobb som finns i Säkerhetskopieringsvalv.

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

Nästa steg