PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Opzioni di backup su cloud per PostgreSQL

Questo blog è stato aggiornato il 27/11/18 e il 29/11/18 per apportare le modifiche consigliate dai nostri fantastici commentatori!

Come con qualsiasi altro componente di un'azienda, i database sono estremamente importanti per il suo funzionamento interno.

Che si tratti del fulcro dell'attività o solo di un altro componente, è necessario eseguire regolarmente il backup dei database e archiviarli in posizioni sicure per un possibile ripristino futuro.

Devo eseguire il backup sul cloud?

Una regola generale è avere almeno 3 copie di qualsiasi cosa di valore e archiviare quei backup in posizioni diverse. I backup sulla stessa unità sono inutili se l'unità stessa si spegne, anche i backup dello stesso host sono a rischio se l'host si interrompe e anche i backup degli stessi edifici sono in pericolo se l'edificio va a fuoco (drastico e improbabile, ma possibile).

I backup su cloud offrono una soluzione semplice per la necessità di backup fuori sede senza dover installare nuovo hardware in una posizione secondaria. Esistono molti servizi cloud diversi che offrono spazio di archiviazione di backup e la scelta di quello giusto dipenderà dalle esigenze di backup, dai requisiti di dimensione, dai costi e dalla sicurezza.

I vantaggi di avere backup su cloud sono molti, ma ruotano principalmente attorno all'avere questi backup archiviati in una posizione diversa rispetto al database principale, permettendoci di avere una rete di sicurezza in caso di ripristino di emergenza. Anche se non entreremo nei dettagli su come impostare ciascuna di queste opzioni di backup, esploreremo alcune idee e configurazioni diverse per i backup.

Ci sono alcuni aspetti negativi nell'archiviazione dei backup nel cloud, a partire dal trasferimento. Se i backup per il database sono estremamente grandi, potrebbe essere necessario molto tempo per eseguire il caricamento effettivo e potrebbe anche comportare un aumento dei costi se il servizio cloud addebita un costo per il trasferimento della larghezza di banda. La compressione è altamente consigliata per mantenere bassi tempi e costi.

La sicurezza potrebbe essere un'altra preoccupazione con l'hosting di backup nel cloud, mentre alcune aziende hanno linee guida rigorose su dove sono archiviati ed esistono i loro dati. Se la sicurezza è un problema, tutti i backup possono essere crittografati prima di esportarli su un servizio di hosting cloud.

Opzioni di backup su cloud

Esistono diversi modi per creare backup di database per PostgreSQL e, a seconda del tipo di backup, il tempo di ripristino, le dimensioni e le opzioni dell'infrastruttura variano. Poiché molte delle soluzioni di archiviazione cloud sono semplicemente archiviazione con front-end API diversi, qualsiasi soluzione di backup intelligente può essere creata con un po' di scripting.

Backup di istantanee

Gli snapshot sono backup che hanno una copia del database PostgreSQL in un momento specifico. Questi backup vengono creati utilizzando pg_dump, che esegue semplicemente il dump del database in un singolo file, o copiando la directory dei dati di base per PostgreSQL. Ciascuno di questi può essere compresso, copiato su altre unità e server e copiato nell'opzione di archiviazione cloud desiderata.

Utilizzo di pg_dump con la compressione

pg_dump -Fc severalnines > severalnines.dmp

Backup della directory dei dati utilizzando pg_basebackup

Il programma pg_basebackup può essere utilizzato per creare un backup di base molto facilmente. Per ulteriori informazioni su tutte le funzionalità e su come configurarlo, visita la documentazione ufficiale per la versione di PostgreSQL in uso.

pg_basebackup --format=tar -z -D severalnines_basebackup

Amazon S3

Con la piattaforma AWS di Amazon, S3 è un servizio di archiviazione dati che può essere utilizzato per archiviare backup di database. Mentre i backup possono essere caricati tramite l'interfaccia Web, Amazon CLI (Command Line Interface) può essere utilizzata per farlo dalla riga di comando e tramite script di automazione del backup. Le informazioni sull'AWS CLI sono disponibili qui. Se i backup devono essere conservati per un tempo molto lungo e il tempo di ripristino non è un problema, i backup possono essere trasferiti al servizio Glacier di Amazon, fornendo uno storage a lungo termine molto più economico.

aws s3 cp severalnines.dmp s3://severalninesbucket/backups

Amazon ha anche diverse regioni per i loro servizi in tutto il mondo. Anche se hanno una buona cronologia dei tempi di attività, la diffusione di copie di backup in più regioni aumenta le opzioni di ripristino di emergenza e riduce le possibilità di perdere dati preziosi.

Archiviazione Microsoft Azure

La piattaforma cloud di Microsoft, Azure, ha opzioni di archiviazione con la propria interfaccia a riga di comando, le informazioni sono disponibili qui.

az storage blob upload --container-name severalnines --file severalnines.dmp --name severalnines_backup

Qualsiasi altro moderno servizio di archiviazione cloud dovrebbe offrire strumenti simili per copiare i backup sui propri server cloud, consultare la loro documentazione per i dettagli.

Backup in standby

A volte i backup stessi possono essere estremamente grandi anche se compressi e il caricamento di un backup giornaliero o settimanale su un servizio cloud potrebbe essere fuori questione a causa della velocità e/o dei costi della larghezza di banda. Quindi ottenere un backup nel cloud per la custodia è molto più difficile.

Un modo per farlo è avere uno standby caldo o caldo in esecuzione in una macchina virtuale basata su cloud, come un'istanza EC2 di Amazon, dove è una copia esatta del database principale principale e gli unici dati che vengono inviati all'istanza cloud è qualsiasi modifica, piuttosto che un'altra copia dell'intero database. Ciò richiederebbe il trasferimento dell'intero database in una volta, ma in seguito, solo le modifiche devono essere trasferite.

Ma un server in standby è in realtà un backup? Se il database master si interrompe, lo standby può essere trasformato nel master e le applicazioni reindirizzate ad esso, tuttavia, se l'obiettivo è avere backup per un certo momento nell'ultima settimana/mesi, questo non funzionerà.

Per risolvere questo problema, si possono fare diverse cose. Lo standby stesso può essere forzato ad avere un ritardo, ad esempio importando i dati solo una volta che ha un giorno. Un altro è creare backup in uno dei modi tradizionali (pg_dump, copia della directory dei dati) sul cloud standby, il che significa che questi backup non dovranno essere trasferiti sulla rete poiché vengono creati sulla macchina cloud stessa. I trasferimenti in rete sono generalmente più rapidi ed economici.

Backup ClusterControl e cloud

Diversinines ha creato ClusterControl, un sistema di gestione di database che aiuta a gestire molti database diversi, incluso PostgreSQL. È una cassetta degli attrezzi definitiva per qualsiasi amministratore di database o di sistema per avere il controllo e la visibilità completi dei propri database e include funzionalità di backup molto utili.

Con ClusterControl, i backup dei database PostgreSQL possono essere facilmente gestiti, pianificati e configurati per copiare automaticamente i backup effettuati su servizi di "archiviazione cloud", inclusi Amazon S3, Microsoft Azure e Google Cloud. Ciò rende non necessario creare uno script di strumenti personalizzati per caricare i backup nel cloud, oltre a fornire una bella interfaccia utente per i backup in generale.

Il backup dei nostri database dovrebbe sempre essere eseguito e archiviarli in una seconda, terza e quarta posizione è una pratica molto buona e comune. L'introduzione di un'opzione cloud aumenta le opzioni di ripristino di emergenza e aggiunge un altro livello di stabilità del back-end per un'azienda, dove in molti casi se il database scompare, l'azienda scompare. L'esplorazione delle opzioni di backup nel cloud oggi può eliminare il disastro domani.