Tutte le aziende oggigiorno hanno (o dovrebbero avere) un Disaster Recovery Plan (DRP) per prevenire la perdita di dati in caso di guasto; costruito secondo un obiettivo del punto di ripristino (RPO) accettabile per l'azienda.
Un backup è un inizio di base in qualsiasi DRP, ma per garantire l'usabilità del backup un singolo backup non è sufficiente. La procedura migliore è archiviare i file di backup in tre posizioni diverse, una archiviata localmente sul server del database (per un ripristino più rapido), un'altra in un server di backup centralizzato e l'ultima nel cloud. Per quest'ultimo passaggio, dovresti scegliere un provider cloud stabile e robusto per assicurarti che i tuoi dati siano archiviati correttamente e siano accessibili in qualsiasi momento.
In questo blog, daremo un'occhiata a uno dei più famosi provider di servizi cloud, Google Cloud Platform (GCP) e a come utilizzarlo per archiviare i tuoi backup PostgreSQL nel cloud.
Informazioni su Google Cloud
Google Cloud offre un'ampia gamma di prodotti per il tuo carico di lavoro. Diamo un'occhiata ad alcuni di essi e al modo in cui sono correlati all'archiviazione dei backup di PostgreSQL nel cloud.
- Cloud Storage:consente l'archiviazione e il recupero in tutto il mondo di qualsiasi quantità di dati in qualsiasi momento. Puoi utilizzare Cloud Storage per una vasta gamma di scenari, tra cui la pubblicazione di contenuti di siti Web, l'archiviazione di dati per l'archiviazione e il ripristino di emergenza o la distribuzione di oggetti di dati di grandi dimensioni agli utenti tramite download diretto.
- Cloud SQL:è un servizio di database completamente gestito che semplifica la configurazione, la manutenzione, la gestione e l'amministrazione dei database relazionali PostgreSQL, MySQL e SQL Server nel cloud.
- Compute Engine:fornisce macchine virtuali in esecuzione in Google Cloud con supporto per la scalabilità da istanze singole al cloud computing globale con bilanciamento del carico. Le macchine virtuali di Compute Engine si avviano rapidamente, sono dotate di opzioni di disco locale e persistente ad alte prestazioni e offrono prestazioni coerenti.
Memorizzazione dei backup su Google Cloud
Se stai eseguendo il tuo database PostgreSQL su Google Cloud con Cloud SQL puoi eseguirne il backup direttamente da Google Cloud Platform, tuttavia, non è necessario eseguirlo qui per archiviare i tuoi backup PostgreSQL.
Google Cloud Storage
Simile al noto prodotto Amazon S3, se non esegui il database PostgreSQL con Cloud SQL, questa è l'opzione più comunemente utilizzata per archiviare backup o file in Google Cloud. È accessibile da Google Cloud Platform, nella sezione Guida introduttiva o nel menu Archiviazione a sinistra. Con Cloud Storage, puoi persino trasferire facilmente i tuoi contenuti S3 qui utilizzando la funzione Trasferisci.
Come utilizzare Google Cloud Storage
Per prima cosa, devi creare un nuovo Bucket per archiviare i tuoi dati, quindi vai su Google Cloud Platform -> Storage -> Crea Bucket
Nel primo passaggio, devi semplicemente aggiungere un nuovo nome di bucket.
Nel passaggio successivo, puoi specificare il tipo di posizione (multi-regione per impostazione predefinita) e il luogo di ubicazione.
Quindi, puoi modificare la classe di archiviazione da standard (opzione predefinita) a Nearline o Coldline.
E poi, puoi modificare l'accesso al controllo.
Infine, hai alcune impostazioni opzionali come la crittografia o la politica di conservazione.
Ora hai creato il tuo nuovo bucket, vedremo come usarlo.
Utilizzo dello strumento GSutil
GSutil è un'applicazione Python che ti consente di accedere a Cloud Storage dalla riga di comando. Ti consente di eseguire diverse attività di gestione di bucket e oggetti. Vediamo come installarlo su CentOS 7 e come caricare un backup utilizzandolo.
Scarica Cloud SDK:
$ curl https://sdk.cloud.google.com | bash
Riavvia la shell:
$ exec -l $SHELL
Esegui gcloud init e configura lo strumento:
$ gcloud init
Questo comando ti chiederà di accedere al tuo account Google Cloud accedendo a un URL e aggiungendo un codice di autenticazione.
Ora che lo strumento è installato e configurato, carichiamo un backup nel bucket.
Per prima cosa, controlliamo i nostri bucket creati:
[[email protected] ~]# gsutil ls
gs://pgbackups1/
E per copiare il backup di PostgreSQL (o un altro file), eseguire:
[[email protected] ~]# gsutil cp /root/backups/BACKUP-3/base.tar.gz gs://pgbackups1/new_backup/
Copying file:///root/backups/BACKUP-3/base.tar.gz [Content-Type=application/x-tar]...
| [1 files][ 4.9 MiB/ 4.9 MiB]
Operation completed over 1 objects/4.9 MiB.
Il bucket di destinazione deve esistere.
E poi, puoi elencare il contenuto della directory new_backup, per controllare il file caricato:
[[email protected] ~]# gsutil ls -r gs://pgbackups1/new_backup/*
gs://pgbackups1/new_backup/
gs://pgbackups1/new_backup/base.tar.gz
Per ulteriori informazioni sull'utilizzo di GSutil, puoi consultare la documentazione ufficiale.
Google Cloud SQL
Se vuoi centralizzare tutto l'ambiente (database + backup) in Google Cloud, hai a disposizione questo prodotto Cloud SQL. In questo modo avrai il tuo database PostgreSQL in esecuzione su Google Cloud e potrai anche gestire i backup dalla stessa piattaforma. È accessibile da Google Cloud Platform, nella sezione Per iniziare o nel menu Archiviazione a sinistra.
Come utilizzare Google Cloud SQL
Per creare una nuova istanza PostgreSQL, vai su Google Cloud Platform -> SQL -> Crea istanza
Qui puoi scegliere tra MySQL e PostgreSQL come motore di database. Per questo blog, creiamo un'istanza PostgreSQL.
Ora devi aggiungere un ID istanza, una password, una posizione e PostgreSQL versione (9.6 o 11).
Hai anche alcune opzioni di configurazione, come abilitare l'indirizzo IP pubblico, il tipo di macchina e archiviazione, backup, ecc.
Quando viene creata l'istanza Cloud SQL, puoi selezionarla e vedrai una panoramica di questa nuova istanza.
E puoi andare alla sezione Backup per gestire i tuoi backup PostgreSQL.
Per ridurre i costi di archiviazione, i backup funzionano in modo incrementale. Ogni backup memorizza solo le modifiche ai tuoi dati dal backup precedente.
Google Cloud Compute Engine
Simile ad Amazon EC2, questo modo di archiviare le informazioni nel cloud è più costoso e dispendioso in termini di tempo rispetto al Cloud Storage, ma avrai il pieno controllo dell'ambiente di archiviazione di backup. È anche accessibile da Google Cloud Platform, nella sezione Per iniziare o nel menu Calcola a sinistra.
Come utilizzare un Google Cloud Compute Engine
Per creare una nuova macchina virtuale, vai su Google Cloud Platform -> Compute Engine -> Crea istanza
Qui devi aggiungere un nome di istanza, una regione e una zona dove Crealo. Inoltre, è necessario specificare la configurazione della macchina in base all'hardware e ai requisiti di utilizzo, nonché la dimensione del disco e il sistema operativo da utilizzare per la nuova macchina virtuale.
Quando l'istanza è pronta, puoi archiviare i backup qui, ad esempio , inviandolo tramite SSH o FTP utilizzando l'indirizzo IP esterno. Diamo un'occhiata a un esempio con Rsync e un altro con il comando SCP Linux.
Per connetterti tramite SSH alla nuova macchina virtuale, assicurati di aver aggiunto la tua chiave SSH nella configurazione della macchina virtuale.
[[email protected] ~]# rsync -avzP -e "ssh -i /home/sinsausti/.ssh/id_rsa" /root/backups/BACKUP-3/base.tar.gz [email protected]:/home/sinsausti/pgbackups/
sending incremental file list
base.tar.gz
5,155,420 100% 1.86MB/s 0:00:02 (xfr#1, to-chk=0/1)
sent 4,719,597 bytes received 35 bytes 629,284.27 bytes/sec
total size is 5,155,420 speedup is 1.09
[[email protected] ~]#
[[email protected] ~]# scp -i /home/sinsausti/.ssh/id_rsa /root/backups/BACKUP-5/base.tar.gz [email protected]:/home/sinsausti/pgbackups/
base.tar.gz 100% 2905KB 968.2KB/s 00:03
[[email protected] ~]#
Puoi incorporarlo facilmente in uno script per eseguire un processo di backup automatico o utilizzare questo prodotto con un sistema esterno come ClusterControl per gestire i tuoi backup.
Gestione dei backup con ClusterControl
Allo stesso modo in cui puoi centralizzare la gestione sia del database che del backup dalla stessa piattaforma utilizzando Cloud SQL, puoi utilizzare ClusterControl per diverse attività di gestione relative al tuo database PostgreSQL.
ClusterControl è un sistema di gestione completo per database open source che automatizza le funzioni di distribuzione e gestione, nonché il monitoraggio dello stato e delle prestazioni. ClusterControl supporta la distribuzione, la gestione, il monitoraggio e la scalabilità per diverse tecnologie e ambienti di database. Quindi puoi, ad esempio, creare la nostra istanza di macchina virtuale su Google Cloud e distribuire/importare il nostro servizio di database con ClusterControl.
Creazione di un backup
Per questa attività, vai su ClusterControl -> Seleziona Cluster -> Backup -> Crea backup.
Puoi creare un nuovo backup o configurarne uno pianificato. Per il nostro esempio, creeremo istantaneamente un singolo backup.
Devi scegliere un metodo, il server da cui verrà eseguito il backup e dove desideri archiviare il backup. Puoi anche caricare il nostro backup sul cloud (AWS, Google o Azure) abilitando il pulsante corrispondente.
Quindi specifica l'uso della compressione, il livello di compressione, la crittografia e il periodo di conservazione per il tuo backup.
Se hai abilitato l'opzione di caricamento del backup nel cloud, vedrai un sezione per specificare il provider cloud (in questo caso Google Cloud) e le credenziali (ClusterControl -> Integrazioni -> Cloud Provider). Per Google Cloud, utilizza Cloud Storage, quindi devi selezionare un Bucket o addirittura crearne uno nuovo per archiviare i tuoi backup.
Nella sezione backup, puoi vedere lo stato di avanzamento del backup e informazioni come metodo, dimensione, posizione e altro.
Conclusione
Google Cloud potrebbe essere una buona opzione per archiviare i backup di PostgreSQL e offre diversi prodotti per farlo. Tuttavia, non è necessario avere i database PostgreSQL in esecuzione lì poiché puoi usarlo solo come posizione di archiviazione.
Lo strumento GSutil è un bel prodotto per gestire i dati di Cloud Storage dalla riga di comando, facile da usare e veloce.
Puoi anche combinare Google Cloud e ClusterControl per migliorare l'ambiente ad alta disponibilità PostgreSQL e il sistema di monitoraggio. Se vuoi saperne di più su PostgreSQL su Google Cloud puoi controllare il nostro post approfondito sul blog.