Principale > Blog sul backup e sul ripristino > Backup e ripristino di PostgreSQL. Come fare il backup del database PostgreSQL?

Backup e ripristino di PostgreSQL. Come fare il backup del database PostgreSQL?

1 Star2 Stars3 Stars4 Stars5 Stars
(7 voti, media: 4,94 fuori da 5)
Loading...
Aggiornato 9th Dicembre 2022, Rob Morrison

Che cos’è PostgreSQL e perché è necessario eseguire il backup?

PostgreSQL è un plugin progettato per semplificare le procedure di backup e ripristino. Ci sono molte ragioni per cui i suoi database potrebbero essere a rischio. Ad esempio, il guasto del dispositivo (che può portare all’indisponibilità di tutte le istanze), la corruzione dei dati (che può anche diffondersi tra le repliche), l’errore del software, l’errore umano, l’attacco ransomware o malware e i requisiti di conformità (come i periodi di conservazione dei dati e l’archiviazione dei dati).

Se amministra un database, è fondamentale eseguire backup regolari per non rischiare di perdere informazioni preziose e ore di lavoro. Avere una solida strategia di backup e ripristino del database è una parte fondamentale della gestione dei dati per qualsiasi operazione.

Un plugin come il backup PostgreSQL può anche aiutarla ad evitare guasti costosi che potrebbero essere motivo di azione legale. Se succede qualcosa che manda in tilt il suo database (a causa di errori innocenti o di attacchi maligni), può ripristinare i suoi dati e farli ripartire rapidamente. Questo articolo spiegherà come fare facilmente il backup e il ripristino dei database Postgres.

Quali metodi di backup sono integrati in Postgres?

PostgreSQL può aiutare gli amministratori a proteggere l’integrità dei dati, gli sviluppatori a costruire ambienti più resilienti e sicuri e i programmatori a creare nuove applicazioni. Il plugin supporta tre tecniche di backup: dump SQL, backup a livello di file system e archiviazione continua. Analizziamo ciascuna di esse in modo più dettagliato.

Dump SQL

L’obiettivo di questo metodo di dump è quello di generare un file con comandi SQL che possono essere inviati al server. Queste informazioni possono aiutarlo a ricreare il database nello stesso stato in cui si trovava quando è stato creato il dump. Può eseguire questa procedura da qualsiasi host remoto, purché abbia accesso al database (dovrà avere accesso in lettura a tutte le tabelle di cui desidera eseguire il backup, quindi è meglio eseguire il dump come superutente del database). I dump creati utilizzando il backup di PostgreSQL sono internamente coerenti e rappresentano un’istantanea del database così come era all’inizio del dump.

Il comando di base per creare un dump è:

pg_dump dbname > dumpfile

E per restaurarne uno:

psql dbname < dumpfile

Un vantaggio di questo metodo di backup è che in genere può ricaricare questo output in nuove versioni di PostgreSQL e trasferire un database su un’architettura di macchina diversa (ad esempio, da un server a 32 bit a uno a 64 bit).

Backup a livello di sistema di file

Può anche eseguire il backup e il ripristino di un database PostgreSQL copiando direttamente i file. Ad esempio, utilizzando il comando:

tar -cf backup.tar /usr/local/pgsql/data

Questo metodo, però, è considerato un po’ più impraticabile o inferiore rispetto a una discarica, perché:

  1. Il server del database deve essere spento per ottenere un backup utilizzabile. Non può limitarsi a negare le connessioni, ma deve arrestare completamente il server. Il motivo è che strumenti come tar prendono un’istantanea non solo dello stato del file system, ma anche del buffering interno).
  2. Non può eseguire il backup o il ripristino di singole tabelle o database selezionati dalle loro directory e dai loro file, perché le informazioni che contengono non possono essere utilizzate senza i rispettivi file di registro dei commit.

I backup a livello di file system funzionano solo per il backup e il ripristino di cluster di database completi. È necessario creare una ‘istantanea coerente’ o ‘istantanea congelata’ dell’intero volume contenente il database – quindi copiare l’intera directory di dati su un dispositivo di backup e rilasciare l’istantanea congelata.

Questa procedura di backup può essere eseguita mentre il server è in funzione; tenga presente che il backup salverà i file del database in uno stato in cui il server non è stato spento correttamente (può eseguire un checkpoint subito prima di eseguire l’istantanea per ridurre il tempo di ripristino). Tenga presente anche che un backup del file system sarà probabilmente di dimensioni maggiori rispetto a un dump SQL.

Backup PostgreSQL ad archiviazione continua

PostgreSQL mantiene sempre un registro continuo scrivere in anticipo il registro nella sottodirectory pg_wal/, registrando ogni modifica apportata ai file di dati del database. L’obiettivo di questo registro è quello di assicurarsi che, in caso di crash del sistema, il database possa essere ripristinato in modo coerente. Il modo in cui PostgreSQL lo fa è quello di ‘riprodurre’ le voci del registro che sono state effettuate dall’ultimo checkpoint.

Questa tecnica di backup può essere combinata con quella del backup a livello di file system per eseguire il backup dei file WAL. Quindi, se deve effettuare un ripristino, può ripristinare il file system e poi eseguire il replay dai file WAL per riportarlo allo stato attuale. Il replay del registro correggerà qualsiasi incongruenza interna, perché può combinare una lunga sequenza di file WAL e ottenere un backup continuo archiviando i file WAL. Inoltre, se alimenta queste serie di file a un’altra macchina che ha lo stesso file di backup di base, può avere un sistema di standby caldo con una copia quasi attuale del database.

Tenga presente che questa tecnica di backup può ripristinare solo interi cluster di database e non sottoinsiemi. Inoltre, utilizza molto spazio di archiviazione perché archivia non solo il database di base, ma anche tutto il traffico WAL. Tuttavia, molte persone preferiscono questo metodo per la sua maggiore affidabilità.

Quali prodotti esistono sul mercato del backup di PostgreSQL e cosa possono fornire?

PostgreSQL è un sistema di gestione di database incredibilmente popolare (Stack Overflow lo ha classificato al secondo posto rispetto a Microsoft SQL Server, Mongo e Oracle).

Grazie alle sue capacità e al suo crescente utilizzo, diverse aziende offrono questo sistema come parte del loro pacchetto di servizi. Alcune di queste includono:

  • Veeam: Questo strumento semplice e conveniente gestisce in modo efficace il recupero di emergenza e l’archiviazione dei dati. Inoltre, consente agli utenti di creare strategie diverse in base ai vari lavori. Tuttavia, i clienti hanno segnalato tempi di risposta lunghi da parte del team di assistenza.
  • Dell Technologies: Può utilizzare la loro Data Protection central come dashboard consolidata per la salute complessiva di tutti i suoi backup utilizzando Networker e Avamar. Il prodotto, tuttavia, è considerato un po’ antiquato e non si è evoluto molto negli ultimi anni.
  • Commvault Backup and Recovery: Commvault consente di ripristinare i dati attraverso una console di gestione controllata a livello centrale, eliminando la necessità per gli amministratori di lavorare sul campo. La funzione “Edge Drive” consente inoltre agli utenti di utilizzare il sistema come un cloud privato. Alcuni clienti, tuttavia, hanno segnalato gravi problemi con i problemi dell’infrastruttura sottostante. Ad esempio, un’interruzione di corrente provoca la corruzione dei database di deduplicazione.
  • Percona PostgreSQL distribution: Percona offre una raccolta di strumenti per aiutarla a gestire il suo sistema di database PostgreSQL, installando PostgreSQL e completandolo con estensioni per risolvere compiti pratici essenziali e consentire ai programmi client di inviare e ricevere query da e verso il server backend PostgreSQL.
  • Veritas: Veritas è uno strumento di protezione dei dati aziendali che si rivolge ai sistemi legacy e le consente di espandere i processi di automazione, governance e gestione esistenti ai database EDB Postgres Advanced Server e PostgreSQL.
  • MicroFocus: MicroFocus è uno dei maggiori fornitori di software aziendali al mondo e offre diverse opzioni di backup per SQL Server, Oracle e PostgreSQL. Può anche fornire raccomandazioni per il backup dei database utilizzati dalle configurazioni dei server.
  • Cohesity: Cohesity semplifica e snellisce la gestione dei dati attraverso database distribuiti e relazionali. Questa opzione è comunemente scelta dalle aziende con grandi volumi di dati in espansione. Cohesity utilizza una funzione di adattatore remoto per il backup dei DB PostgreSQL e dei log WAL.
  • Rubrik: Rubrik offre protezione contro gli hacker e può aiutare le aziende a riprendersi rapidamente dagli attacchi. La piattaforma supporta la consapevolezza delle app per Oracle, SAP HANA, PostgreSQL, Microsoft SQL Server, MySQL e NoSQL.

Capacità di Bacula Enterprise nel backup e nel ripristino di Postgres

Bacula è una soluzione di backup dei dati aziendali basata su abbonamento che aiuta i centri dati a gestire un volume elevato di dati a un costo molto basso. I clienti hanno valutato l’azienda in modo costantemente elevato, in quanto si tratta di una soluzione di backup di livello aziendale estremamente personalizzabile, con solide prestazioni ed eccellente scalabilità.

Bacula offre diversi vantaggi rispetto ai suoi concorrenti: Può lavorare con ambienti fisici, virtuali, container e cloud, snapshot, deduplicazione avanzata, ripristini e verifica dei dati, tutto in un’unica piattaforma. Può utilizzare facilmente PostgreSQL con Bacula Enterprise.

Può scegliere tra due tecniche principali per il backup del suo database Postgres con Bacula Enterprise: PITR (point-in-time recovery) o Dump. La configurazione del plugin è semplice.

Innanzitutto, dovrà specificare la direttiva Plugin Directory nella risorsa FileDaemon del file bacula-fd.conf.

Per configurare PITR, dovrà abilitare l’archiviazione WAL per utilizzare la funzione Point In Time Recovery di PostgreSQL. La configurazione varia leggermente a seconda della versione del cluster (dovrà configurare il archive_command e archive_mode, oppure il archive_command, wal_level e archive_mode). Deve anche abilitare l’opzione Accurate nella risorsa Lavoro, perché il plugin utilizza le informazioni sulla modalità Accurate per gestire i backup differenziali.

Il plugin può eseguire le seguenti azioni in modalità PITR:

  • Backup completo: Esegue il backup dell’intera directory di dati e di tutti i file WAL.
  • Backup incrementale: Forza il passaggio del WAL corrente ed esegue il backup di tutti i file WAL generati dall’ultimo backup.
  • Backup differenziale: esegue il backup dei file di dati modificati dall’ultimo backup completo e dei file WAL generati dall’ultimo backup.

Non sarà in grado di eseguire backup incrementali o differenziali quando utilizza la modalità Dump, ma il plugin rileverà tutti i database del suo server.

Può anche ripristinare utenti e ruoli nel suo cluster PostgreSQL (basta selezionare il file roles.sql), un singolo database (selezioni la directory del database nel comando di ripristino, che deve contenere il file di dati e lo script di creazione del database), così come eseguire il dump dei file in una directory, ripristinare una singola tabella o un cluster completo utilizzando PITR. In questo caso, dovrà:

  1. Arresta il server, se è in esecuzione.
  2. Copia l’intera directory dei dati del cluster e tutti i tablespace in una posizione temporanea (per precauzione).
  3. Pulire tutti i file e le sottodirectory esistenti.
  4. Ripristinare i file del database dal dump di backup.
  5. Rimuovere i file presenti in pg_xlog, copiare il file del segmento WAL non archiviato nel file.
  6. Modificare il file del comando di recupero nella directory dei dati del cluster e rinominarlo recovery.conf.
  7. Avviare il server.

Bacula utilizza un servizio di connessione che consente di associare i parametri PostgreSQL ad un unico nome di servizio – che può essere specificato da una connessione PostgreSQL e dalle sue impostazioni associate. Può testare l’accesso al database utilizzando il comando estimate per assicurarsi che il plugin sia ben configurato.

Il plugin PostgreSQL è disponibile come pacchetto Bacula Enterprise per tutte le piattaforme supportate e supporta le versioni 8.4, 9.0, 9.1, 9.2, 9.3, 9.4 e 9.5 di PostgreSQL. Deve solo installarlo sul Client dove risiede il suo cluster PostgreSQL.

Con Bacula, può eseguire il backup e il ripristino dei database PostgreSQL in modo rapido e senza dover ricorrere a script complessi. Il software si prende cura di tutte le informazioni essenziali, supportando le tecniche di backup e ripristino dump e Point in Time Recovery (o PITR), tra cui il backup incrementale del DB PostgreSQL e il backup differenziale del database PostgreSQL.

Iniziare con Bacula Enterprise è facile; basta compilare il modulo e scaricare la prova. Bacula ha livelli di sicurezza molto elevati, non ha costi di volume di dati, un modello di licenza in abbonamento e nessun vendor lock-in. L’azienda non include solo il miglior software di backup dei dati, ma anche un supporto, patch e aggiornamenti.

Informazioni sull'autore
Rob Morrison
Rob Morrison è il direttore marketing di Bacula Systems. Ha iniziato la sua carriera nel marketing IT con Silicon Graphics in Svizzera, ottenendo ottimi risultati in vari ruoli di gestione del marketing per quasi 10 anni. Nei 10 anni successivi, Rob ha ricoperto anche diverse posizioni di gestione del marketing in JBoss, Red Hat e Pentaho, assicurando la crescita della quota di mercato di queste note aziende. Si è laureato all'Università di Plymouth e ha conseguito una laurea ad honorem in Digital Media and Communications e ha completato un programma di studi all'estero.
Lascia un commento

Il suo indirizzo e-mail non sarà pubblicato. I campi obbligatori sono contrassegnati da *