Eseguire il backup di database PostgreSQL di Azure usando l'interfaccia della riga di comando di Azure
Questo articolo illustra come eseguire il backup del database PostgreSQL di Azure usando l'interfaccia della riga di comando di Azure.
In questo articolo si apprenderà come:
- Creare un insieme di credenziali per il backup
- Creare un criterio di backup
- Configurare il backup di un database PostgreSQL di Azure
- Eseguire un processo di backup su richiesta
Per informazioni sugli scenari e le limitazioni supportati per i database informgreSQL, vedere la matrice di supporto.
Creare un insieme di credenziali per il backup
L'insieme di credenziali di Backup è un'entità di archiviazione in Azure che consente di archiviare i dati di backup per i nuovi carichi di lavoro supportati da Backup di Azure, ad esempio i server di Database di Azure per PostgreSQL, i BLOB in un account di archiviazione e i dischi di Azure. Gli insiemi di credenziali di Backup semplificano l'organizzazione dei dati di backup, riducendo al minimo il sovraccarico di gestione. Gli insiemi di credenziali di Backup si basano sul modello di Azure Resource Manager di Azure, che offre funzionalità avanzate per proteggere i dati di backup.
Prima di creare un insieme di credenziali di Backup, scegliere la ridondanza di archiviazione dei dati all'interno di tale insieme. Procedere quindi con la creazione dell'insieme di credenziali di Backup con la ridondanza di archiviazione e il percorso.
In questo articolo verrà creato un insieme di credenziali di Backup TestBkpVault, nell'area westus, nel gruppo di risorse testBkpVaultRG. Usare il comando az dataprotection vault create per creare un insieme di credenziali di Backup. Altre informazioni sulla creazione di un insieme di credenziali di Backup.
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"
}
Dopo aver creato l'insieme di credenziali, creare un criterio di backup per proteggere i database PostgreSQL di Azure.
Creare un criterio di backup
Informazioni sui criteri di backup di PostGreSQL
Anche se il backup su disco offre più backup al giorno e il backup dei BLOB è un backup continuo senza trigger, il backup di PostgreSQL offre protezione a livello di archiviazione archivio. I dati di backup inizialmente inviati all'insieme di credenziali possono essere spostati nel livello archivio in base a una regola definita o a un ciclo di vita. In questo contesto verrà illustrato l'oggetto criteri di backup per PostgreSQL.
- PolicyRule
- BackupRule
- BackupParameter
- BackupType (backup completo del database in questo caso)
- Archivio dati iniziale (dove verranno inizialmente posizionati i backup)
- Trigger (modalità di attivazione del backup)
- In base alla pianificazione
- Criteri di assegnazione di tag predefiniti (un 'tag' predefinito per tutti i backup pianificati. Questo tag collega i backup alla regola di conservazione)
- BackupParameter
- Regola di conservazione predefinita (regola che verrà applicata a tutti i backup, per impostazione predefinita, nell'archivio dati iniziale)
- BackupRule
Questo oggetto definisce quindi i tipi di backup che vengono attivati, il modo in cui vengono attivati (tramite una pianificazione), gli elementi con cui vengono contrassegnati, dove vengono inseriti (un archivio dati) e il ciclo di vita dei dati di backup in un archivio dati. L'oggetto PowerShell predefinito per PostgreSQL indica di attivare backup completi ogni settimana che raggiungeranno l'insieme di credenziali, in cui vengono archiviati per tre mesi.
Se si vuole aggiungere il livello archivio ai criteri, è necessario decidere quando i dati verranno spostati dall'insieme di credenziali all'archivio, per quanto tempo i dati rimangono nell'archivio e quali backup pianificati devono essere contrassegnati come archiviabili. È quindi necessario aggiungere una regola di conservazione, in cui il ciclo di vita dei dati di backup verrà definito dall'archivio dati dell'insieme di credenziali all'archivio dati di archiviazione e per quanto tempo rimarranno nell'archivio dati di archiviazione. È infine necessario aggiungere un tag che contrassegnerà i backup pianificati come idonei per l'archiviazione.
L'oggetto PowerShell risultante è il seguente:
- PolicyRule
- BackupRule
- BackupParameter
- BackupType (backup completo del database in questo caso)
- Archivio dati iniziale (dove verranno inizialmente posizionati i backup)
- Trigger (modalità di attivazione del backup)
- In base alla pianificazione
- Criteri di assegnazione di tag predefiniti (un 'tag' predefinito per tutti i backup pianificati. Questo tag collega i backup alla regola di conservazione)
- Nuovi criteri di assegnazione di tag per la nuova regola di conservazione con lo stesso nome 'X'
- BackupParameter
- Regola di conservazione predefinita (regola che verrà applicata a tutti i backup, per impostazione predefinita, nell'archivio dati iniziale)
- Nuova regola di conservazione denominata 'X'
- Ciclo di vita
- Archivio dati di origine
- Eliminazione allo scadere del periodo di tempo specificato nell'archivio dati di origine
- Copia nell'archivio dati di destinazione
- Ciclo di vita
- BackupRule
Recuperare il modello di criteri
Per informazioni sui componenti interni di un criterio di backup per il backup del database PostgreSQL di Azure, recuperare il modello di criteri usando il comando az dataprotection backup-policy get-default-policy-template. Questo comando restituisce un modello di criteri predefinito per un determinato tipo di origine dati. Usare questo modello di criterio per creare un nuovo criterio.
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"
}
]
}
Il modello di criteri è costituito da un trigger (che determina cosa attiva il backup) e un ciclo di vita (che decide quando eliminare/copiare/spostare il backup). Nel backup del database PostgreSQL di Azure, il valore predefinito per il trigger è un trigger settimanale pianificato (un backup ogni sette giorni) e un periodo di conservazione di ogni backup pari a tre mesi.
Trigger pianificato:
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T06:30:00+00:00/P1W"
],
"timeZone": "UTC"
}
Ciclo di vita della regola di conservazione predefinito:
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
Modifica del modello di criteri
Importante
In Azure PowerShell, gli oggetti possono essere usati come percorsi di gestione temporanea per eseguire tutte le modifiche. Nell'interfaccia della riga di comando di Azure è necessario usare i file, perché in tale ambiente non esiste il concetto di oggetti. Ogni operazione di modifica deve essere reindirizzata a un nuovo file, dove il contenuto viene letto dal file di input e reindirizzato al file di output. In un secondo momento è possibile rinominare il file in base alle specifiche esigenze mediante l'uso in uno script.
Modificare la pianificazione
Il modello di criteri predefinito prevede un backup una volta alla settimana. È possibile modificare la pianificazione del backup in modo che venga eseguita più giorni alla settimana. Per modificare la pianificazione, usare il comando az dataprotection backup-policy trigger set.
Nell'esempio seguente il backup settimanale viene modificato in modo che venga eseguito ogni domenica, mercoledì e venerdì di ogni settimana. La matrice di date di pianificazione indica le date e i giorni della settimana associati a tali date vengono considerati giorni della settimana. È anche necessario indicare che queste pianificazioni devono essere ripetute ogni settimana. L'intervallo di pianificazione è quindi 1 e il tipo di intervallo è Settimanale.
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
Aggiungere una nuova regola di conservazione
Se si vuole aggiungere la protezione a livello di archiviazione archivio, è necessario modificare il modello di criteri come indicato di seguito.
Il modello predefinito avrà un ciclo di vita per l'archivio dati iniziale nella regola di conservazione predefinita. In questo scenario, la regola specifica di eliminare i dati di backup dopo tre mesi. È necessario aggiungere una nuova regola di conservazione che definisce quando i dati vengono spostati nell'archivio dati di archiviazione, ovvero i dati di backup vengono prima copiati nell'archivio dati archivio e quindi eliminati nell'archivio dati dell'insieme di credenziali. Inoltre, la regola deve definire per quanto tempo i dati vengono conservati nell'archivio dati di archiviazione. Usare il comando az dataprotection backup-policy retention-rule create-lifecycle per creare nuovi cicli di vita e usare il comando az dataprotection backup-policy retention-rule set per associarli alle regole nuove o esistenti.
Nell'esempio seguente viene creata una nuova regola di conservazione denominata Monthly, in cui il primo backup riuscito di ogni mese deve essere conservato nell'insieme di credenziali per sei mesi, spostato nel livello di archiviazione archivio e conservato in tale livello per 24 mesi.
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
Aggiungere un tag e i criteri pertinenti
Dopo aver creato una regola di conservazione, è necessario creare un tag corrispondente nella proprietà Trigger dei criteri di backup. Usare il comando az dataprotection backup-policy tag create-absolute-criteria per creare un nuovo criterio di assegnazione di tag e il comando az dataprotection backup-policy tag set per aggiornare il tag esistente o crearne uno nuovo.
Nell'esempio seguente viene creato un nuovo tag insieme ai criteri, il primo backup riuscito del mese. Il tag ha lo stesso nome della regola di conservazione corrispondente da applicare.
In questo esempio, i criteri di tag devono essere denominati Monthly.
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
Si supponga che la pianificazione preveda più backup alla settimana (ogni domenica, mercoledì, giovedì, come specificato nell'esempio precedente) e si voglia archiviare i backup domenica e venerdì; i criteri di assegnazione di tag possono pertanto essere modificati come indicato di seguito, usando il comando az dataprotection backup-policy tag 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
Creare un nuovo criterio di backup PostgreSQL
Dopo aver modificato il modello in base ai requisiti, usare il comando az dataprotection backup-policy create per creare un criterio usando il modello modificato.
az dataprotection backup-policy create --backup-policy-name FinalOSSPolicy --policy AddedRetentionRuleAndTag.JSON --resource-group testBkpVaultRG --vault-name TestBkpVault
Configurare il backup
Dopo aver creato l'insieme di credenziali e i criteri, per proteggere un database PostgreSQL di Azure è necessario considerare tre punti critici.
Entità chiave coinvolte
Database PostGreSQL da proteggere
Recuperare l'ID di Azure Resource Manager (ID ARM) di PostgreSQL da proteggere. Viene usato come identificatore del database. Verrà usato un esempio di database denominato empdb11 in un server PostgreSQL testposgresql, presente nel gruppo di risorse ossrg in una sottoscrizione diversa.
Nell'esempio seguente viene usato bash.
ossId="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/servers/archive-postgresql-ccy/databases/empdb11"
Insieme di credenziali delle chiavi di Azure
Il servizio Backup di Azure non archivia il nome utente e la password per connettersi al database PostgreSQL. L'amministratore del backup deve invece effettuare il seeding delle chiavi nell'insieme di credenziali delle chiavi. Il servizio Backup accederà quindi all'insieme di credenziali delle chiavi, leggerà le chiavi e quindi accederà al database. Prendere nota dell'identificatore segreto della chiave pertinente.
Nell'esempio seguente viene usato bash.
keyURI="https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"
Insieme di credenziali per il backup
L'insieme di credenziali di Backup deve connettersi al server PostgreSQL e quindi accedere al database tramite le chiavi presenti nell'insieme di credenziali delle chiavi. Pertanto, richiede l'accesso al server PostgreSQL e all'insieme di credenziali delle chiavi. L'accesso viene concesso all'identità del servizio gestita dell'insieme di credenziali di Backup.
Vedere le autorizzazioni che è necessario concedere all'identità del servizio gestita dell'insieme di credenziali di Backup nel server PostgreSQL e nell'insieme di credenziali delle chiavi di Azure che archivia le chiavi del database.
Preparare la richiesta
Dopo aver impostato tutte le autorizzazioni pertinenti, la configurazione del backup viene eseguita in due passaggi.
- La richiesta pertinente viene preparata usando l'insieme di credenziali, i criteri e il database PostgreSQL pertinenti usando il comando az dataprotection backup-instance initialize.
- La richiesta per proteggere il database viene inviata usando il comando 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
Eseguire un backup su richiesta
È necessario specificare una regola di conservazione durante l'attivazione del backup. Per visualizzare le regole di conservazione nei criteri, passare al file JSON dei criteri per le regole di conservazione. Nell'esempio seguente sono presenti due regole di conservazione denominate Default e Monthly. Verrà usata la regola Monthly per il backup su richiesta.
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"
}
Per attivare un backup su richiesta, usare il comando az dataprotection backup-instance adhoc-backup.
az dataprotection backup-instance adhoc-backup --name "ossrg-empdb11" --rule-name "Monthly" --resource-group testBkpVaultRG --vault-name TestBkpVault
Tenere traccia dei processi
È possibile tenere traccia di tutti i processi usando il comando az dataprotection job list. È possibile elencare tutti i processi e recuperare un dettaglio specifico del processo.
È anche possibile usare Az.ResourceGraph per tenere traccia dei processi in tutti gli insiemi di credenziali di Backup. Usare il comando az dataprotection job list-from-resourcegraph per recuperare i processi pertinenti a livello di insiemi di credenziali di Backup.
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --status Completed