Servizio di backup e DR per PostgreSQL

PostgreSQL è un potente sistema di database relazionale a oggetti open source che utilizza ed estende il linguaggio SQL combinato con molte funzionalità che archiviano e scalano in sicurezza i carichi di lavoro di dati più complessi.

API di backup PostgreSQL utilizzata da Backup e RE

  • Backup a livello di volume (monitoraggio dei blocchi di modifica di Linux e snapshot LVM): Backup e RE utilizzano i comandi PostgreSQL pg_start_backup(label) e pg_stop_backup() per eseguire i backup con il monitoraggio dei blocchi di modifica di Linux e lo snapshot LVM.

  • Backup completi e incrementali (tradizionali basati su file): il backup e RE calamitosi utilizzano i comandi di backup basati su file di PostgreSQL pg_dump. Il comando pg_dump non ha un'opzione per acquisire le modifiche incrementali di un database, pertanto ogni backup è un backup completo del dump del database.

    Il ripristino del database consente di recuperarlo sovrascrivendo fisicamente l'area dati.

  • Backup dei log di PostgreSQL: durante un backup dei log, Backup e RE copia fisicamente tutti i WAL di PostgreSQL (WriteAheadLog). Per eliminare i log, Backup e RE utilizza un comando a livello di sistema operativo.

Come funziona: backup basato su volume di backup e RE con CBT di Linux

Nel bitmap vengono monitorati solo i blocchi modificati: nessuna copia su scrittura, nessuna operazione con uso intensivo di I/O.

I passaggi seguenti descrivono la procedura di backup e recupero dei dati:

  1. L'agente di backup e RE dispone della tecnologia CBT per monitorare i blocchi modificati nell'area dei dati del database.

  2. L'agente chiama l'API di database per bloccare o mettere in pausa il database per il backup dei dati.

  3. L'agente crea uno snapshot LVM dell'area dati del database e sintetizza un bitmap.

  4. Chiamata dell'agente all'API del database per sbloccare il database.

  5. L'agente copia i blocchi modificati nell'appliance di backup/ripristino, che elimina lo snapshot e cataloga il backup.

  6. L'appliance emette uno snapshot interno e sintetizza un backup completo virtuale point-in-time.

  7. Per il recupero dei dati, Backup e RE montano immediatamente un disco di staging riscrivibile e mettono il database online.

Il comando quiesce o unquiesce viene eseguito sul principale per un job di snapshot a livello di volume:

select pg_start_backup(<label>);
select pg_stop_backup();

I comandi quiesce e unquiesce vengono eseguiti su un nodo di standby per un job di istantanea a livello di volume:

Se la versione di PostgreSQL è 10.x o successiva:

select pg_wal_replay_pause();
select pg_wal_replay_resume();

Se la versione di PostgreSQL è 9.x:

select pg_xlog_replay_pause();
select pg_xlog_replay_resume();

Come funziona: backup basato su file

I passaggi seguenti descrivono la procedura per eseguire il backup e il recupero dei dati con le immagini di backup basate su file:

  1. L'agente di Backup e RE viene dispiegato nel server di database.

  2. Monta il disco di staging sul server di database.

  3. Esegui il backup completo utilizzando il comando dump backup, scrivendo il backup sul disco montato.

  4. Backup e RE acquisiscono uno snapshot interno. I backup dei log vengono eseguiti in modo simile direttamente dal file system in base alla pianificazione configurata.

  5. Per il recupero dei dati, Backup e RE monta immediatamente il disco intermedio sul server di database e avvia l'operazione di ripristino del database. I log possono essere riprodotti fino a qualsiasi momento dopo il ripristino del database.

Passaggi successivi

Prepara il database per il backup e la RE

Altra documentazione per il backup e RE per PostgreSQL