Condividi tramite


Creare criteri di backup per i database PostgreSQL usando l'API REST di protezione dei dati

I criteri di backup regolano la conservazione e la pianificazione dei backup del database PostgreSQL in Database di Azure per PostgreSQL. Database di Azure per PostgreSQL offre una conservazione a lungo termine dei backup del database e supporta un backup al giorno.

È possibile riutilizzare un criterio di backup esistente per configurare i backup dei database PostgreSQL in una cassetta oppure è possibile creare un criterio di backup per una cassetta dei Servizi di ripristino di Azure usando l'API REST Protezione Dati per il backup di Azure. In questo articolo vengono creati i criteri di backup.

Informazioni sui criteri di backup di PostgreSQL

Mentre il backup su disco offre più backup al giorno e il backup BLOB è un backup continuo senza trigger, il backup di PostgreSQL offre la protezione dell'archivio. È possibile spostare i dati di backup inizialmente inviati all'insieme di credenziali nel livello archivio in base a una regola definita o a un ciclo di vita.

In questo contesto, la gerarchia seguente consente di comprendere l'oggetto criteri di backup per PostgreSQL:

  • Regola della politica
    • Regola di backup
      • Parametro di backup
        • Tipo di backup (in questo caso backup completo del database)
        • Archivio dati iniziale (in cui inizialmente i backup atterrano)
        • Trigger (modalità di attivazione del backup)
          • Schedule
          • Criteri di assegnazione di tag predefiniti (un tag predefinito che collega tutti i backup pianificati alla regola di conservazione)
    • Regola di conservazione predefinita (regola applicata a tutti i backup, per impostazione predefinita, nell'archivio dati iniziale)

L'oggetto criteri definisce i tipi di backup attivati, il modo in cui vengono attivati (tramite una pianificazione), i tag con cui vengono contrassegnati, dove vengono inseriti (un archivio dati) e il ciclo di vita dei dati in un archivio dati.

L'oggetto PowerShell predefinito per PostgreSQL indica di attivare un backup completo ogni settimana. I backup raggiungono la cassaforte, dove vengono archiviati per tre mesi.

Se si desidera aggiungere il livello archivio al criterio, è necessario decidere quando i dati verranno spostati dalla cassaforte all'archivio, per quanto tempo i dati rimarranno nell'archivio e quali dei backup pianificati devono essere contrassegnati come adatti all'archiviazione. È necessario aggiungere una regola di conservazione che definisce il ciclo di vita dei dati di backup dal vault datastore all'archiviazione. La regola di conservazione definisce anche per quanto tempo i dati di backup rimarranno nell'archivio dati di archiviazione. È quindi necessario aggiungere un tag che contrassegna i backup pianificati come idonei per l'archiviazione.

L'oggetto PowerShell risultante è il seguente:

  • Regola della politica
    • Regola di backup
      • Parametro di backup
        • Tipo di backup (in questo caso backup completo del database)
        • Archivio dati iniziale (in cui inizialmente i backup atterrano)
        • Trigger (modalità di attivazione del backup)
          • Schedule
          • Criteri di assegnazione di tag predefiniti (un tag predefinito che collega tutti i backup pianificati alla regola di conservazione)
          • Nuovi criteri di assegnazione di tag per la nuova regola di conservazione con lo stesso nome
    • Regola di conservazione predefinita (regola applicata a tutti i backup, per impostazione predefinita, nell'archivio dati iniziale)
    • Nuova regola di conservazione
      • Ciclo vitale
        • Archivio dati di origine
        • Periodo di tempo per l'eliminazione nell'archivio dati di origine
        • Copiare nell'archivio dati di destinazione

Creare criteri

Importante

Attualmente, l'aggiornamento o la modifica di un criterio esistente non sono supportati. Creare invece un nuovo criterio con i dettagli necessari e assegnarlo all'istanza di backup pertinente.

Per creare un criterio di backup, usare l'operazione seguente PUT :

PUT https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{policyName}?api-version=2021-01-01

L'URI fornisce i valori {policyName} e {vaultName}. Il corpo della richiesta fornisce informazioni aggiuntive.

Creare il corpo della richiesta

Per creare un criterio per il backup di PostgreSQL, il corpo della richiesta richiede i componenti seguenti:

Nome Obbligatoria Type Descrizione
properties true BaseBackupPolicy: BackupPolicy Proprietà BaseBackupPolicyResource

Per l'elenco completo delle definizioni nel corpo della richiesta, vedere i criteri di backup dell'API REST.

Esempio di corpo della richiesta

Il criterio indica:

  • Il trigger viene pianificato per un backup settimanale all'ora di inizio prescelta (ora + P1W).
  • L'archivio dati è un archivio dell'insieme di credenziali, poiché i backup vengono trasferiti direttamente nell'insieme di credenziali.
  • I backup vengono conservati nell'insieme di credenziali per tre mesi (P3M).
{
  "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"
    }
  ]
}

Importante

I formati orari supportano solo DateTime. Time non è supportata. L'ora del giorno indica l'ora di inizio del backup, non l'ora di fine.

Si aggiornerà ora il codice JSON precedente con due modifiche:

  • Aggiungere backup in più giorni della settimana.
  • Aggiungi un archivio di dati per la memoria a lungo termine dei backup del database PostgreSQL.

Nell'esempio seguente viene modificato il backup settimanale in domenica, mercoledì e venerdì di ogni settimana. La matrice delle date di programmazione indica le date, e i giorni di tali date sono considerati come giorni della settimana. È anche necessario specificare che queste pianificazioni devono essere ripetute ogni settimana. L'intervallo di pianificazione è 1 quindi e il tipo di intervallo è Weekly.

Attivazione pianificata

"trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "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"
          ],
          "timeZone": "UTC"
        }

Se si vuole aggiungere la protezione dell'archivio, è necessario modificare il codice JSON dei criteri.

Ciclo di vita delle politiche di conservazione

Il codice JSON precedente ha 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 nel datastore archivio e quindi eliminati nel datastore vault.

Inoltre, la regola deve definire il periodo per mantenere i dati nel datastore di archivio. Nominiamo questa nuova regola Monthly. Specifica che i backup devono essere conservati nel datastore del vault per 6 mesi e quindi copiati nel datastore di archiviazione. Successivamente, eliminare i backup nel datastore vault e conservarli per 24 mesi nel datastore di archivio. Finalmente, elimina i dati nell'archivio dati.

"lifecycles": [
        {
          "deleteAfter": {
            "duration": "P3M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": []
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    },
    {
      "isDefault": false,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P6M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": {
            "copyAfter": {
              "objectType": "CopyOnExpiryOption"
            },
            "dataStore": {
              "dataStoreType": "ArchiveStore",
              "objectType": "DataStoreInfoBase"
            }
          }
        },
        {
          "deleteAfter": {
            "duration": "P24M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "ArchiveStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": null
        }
      ],
      "name": "Monthly",
      "objectType": "AzureRetentionRule"
    }

Criteri di assegnazione di tag

Ogni volta che si aggiunge una regola di conservazione, è necessario aggiungere un tag corrispondente nella Trigger proprietà del criterio. Nell'esempio seguente viene creato un nuovo tag insieme ai criteri ,ovvero il primo backup riuscito del mese, con esattamente lo stesso nome della regola di conservazione corrispondente da applicare.

In questo esempio i criteri di tag devono essere denominati Monthly:

{
  "criteria": [
    {
      "absoluteCriteria": [
        "FirstOfMonth"
      ],
      "objectType": "ScheduleBasedBackupCriteria"
    }
  ],
  "isDefault": false,
  "tagInfo": {
    "tagName": "Monthly"
  },
  "taggingPriority": 15
}

Dopo aver incluso tutte le modifiche, il codice JSON dei criteri viene visualizzato come segue:

{
  "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-15T22:00:00+00:00/P1W",
            "R/2021-08-18T22:00:00+00:00/P1W",
            "R/2021-08-20T22:00:00+00:00/P1W"
          ],
          "timeZone": "UTC"
        },
        "taggingCriteria": [
          {
            "isDefault": true,
            "tagInfo": {
              "id": "Default_",
              "tagName": "Default"
            },
            "taggingPriority": 99
          },
          {
            "criteria": [
              {
                "absoluteCriteria": [
                  "FirstOfMonth"
                ],
                "objectType": "ScheduleBasedBackupCriteria"
              }
            ],
            "isDefault": false,
            "tagInfo": {
              "tagName": "Monthly"
            },
            "taggingPriority": 15
          }
        ]
      }
    },
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P3M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": []
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    },
    {
      "isDefault": false,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P6M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": {
            "copyAfter": {
              "objectType": "CopyOnExpiryOption"
            },
            "dataStore": {
              "dataStoreType": "ArchiveStore",
              "objectType": "DataStoreInfoBase"
            }
          }
        },
        {
          "deleteAfter": {
            "duration": "P24M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "ArchiveStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": null
        }
      ],
      "name": "Monthly",
      "objectType": "AzureRetentionRule"
    }
  ]
}

Per altre informazioni sulla creazione dei criteri, vedere Creare un criterio di backup.

Controllare la risposta

La creazione o l'aggiornamento dei criteri di backup è un'operazione sincrona. Dopo che l'operazione è riuscita, viene restituita la seguente risposta di stato con il contenuto della policy nel corpo della risposta.

Nome Tipo Descrizione
200 OK BaseBackupPolicyResource L'operazione è stata completata.

Risposta di esempio

{
    "properties": {
        "policyRules": [
            {
                "backupParameters": {
                    "backupType": "Full",
                    "objectType": "AzureBackupParams"
                },
                "trigger": {
                    "schedule": {
                        "repeatingTimeIntervals": [
                            "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"
                        ],
                        "timeZone": "UTC"
                    },
                    "taggingCriteria": [
                        {
                            "tagInfo": {
                                "tagName": "Monthly",
                                "id": "Monthly_"
                            },
                            "taggingPriority": 15,
                            "isDefault": false,
                            "criteria": [
                                {
                                    "absoluteCriteria": [
                                        "FirstOfMonth"
                                    ],
                                    "objectType": "ScheduleBasedBackupCriteria"
                                }
                            ]
                        },
                        {
                            "tagInfo": {
                                "tagName": "Default",
                                "id": "Default_"
                            },
                            "taggingPriority": 99,
                            "isDefault": true
                        }
                    ],
                    "objectType": "ScheduleBasedTriggerContext"
                },
                "dataStore": {
                    "dataStoreType": "VaultStore",
                    "objectType": "DataStoreInfoBase"
                },
                "name": "BackupWeekly",
                "objectType": "AzureBackupRule"
            },
            {
                "lifecycles": [
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P6M"
                        },
                        "targetDataStoreCopySettings": [
                            {
                                "dataStore": {
                                    "dataStoreType": "ArchiveStore",
                                    "objectType": "DataStoreInfoBase"
                                },
                                "copyAfter": {
                                    "objectType": "CopyOnExpiryOption"
                                }
                            }
                        ],
                        "sourceDataStore": {
                            "dataStoreType": "VaultStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    },
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P24M"
                        },
                        "targetDataStoreCopySettings": [],
                        "sourceDataStore": {
                            "dataStoreType": "ArchiveStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    }
                ],
                "isDefault": false,
                "name": "Monthly",
                "objectType": "AzureRetentionRule"
            },
            {
                "lifecycles": [
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P3M"
                        },
                        "targetDataStoreCopySettings": [],
                        "sourceDataStore": {
                            "dataStoreType": "VaultStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    }
                ],
                "isDefault": true,
                "name": "Default",
                "objectType": "AzureRetentionRule"
            }
        ],
        "datasourceTypes": [
            "Microsoft.DBforPostgreSQL/servers/databases"
        ],
        "objectType": "BackupPolicy"
    },
    "id": "/subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/DebRG1/providers/Microsoft.DataProtection/backupVaults/DebBackupVault/backupPolicies/OssPolicy1",
    "name": "OssPolicy1",
    "type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}