Come eseguire il backup di MySQL, MariaDB o Postgres con Borg

Cerca

Se nel nostro scenario di backup con Borg abbiamo necessità di eseguire anche il backup dei nostri database, possiamo seguire uno dei due modi presenti in questa guida.

Premessa importante

Anzitutto è necessario fare un piccolo preambolo. Un metodo, che ho visto spesso applicare, è quello di copiare la directory dove il DBMS salva i dati interni del database. Mi sento di NON consigliare questa strategia in quanto non è sicuro eseguire una copia di quei file mentre il servizio del DBMS è in esecuzione. Quindi, a meno che non si voglia stoppare preventivamente il database service durante il backup (creando così un’interruzione del servizio), è meglio considereare un altro approccio. Vediamo qui di seguito come poter fare.

Backup del DB utilizzando Borgmatic e il suo Database Hook

Nel caso si stia già utilizzando il binomio Borg con Borgmatic e il database è di grandi dimensioni, è consigliabile utilizzare i Database Hook integrati in Borgmatic per scaricarne il contenuto e includerlo nel backup.

Per eseguire il dump di tutti i DB MySQL e Postgres prima di ogni backup utilizzare il seguente snippet:

				
					hooks:
    postgresql_databases:
        - name: all
    mysql_databases:
        - name: all
				
			

Il vantaggio dell’applicare questa tecnica è che il dump del DB viene letto tramite una pipe e quindi mai scritto su disco, rendendo questo processo eseguibile anche negli scenari in cui lo spazio su disco della macchina di cui si esegue il backup non è sufficiente per contenere il backup stesso.

Riferimenti

Backup del DB utilizzando uno script di dump

Molte delle popolari distribuzioni Linux includono scripts come automysqlbackup o autopostgresqlbackup. Questi script possono essere utilizzati per generare un dump giornaliero di tutti i database, il quale viene salvato per default nel percorso /var/lib/automysqlbackup. Possiamo quindi eseguire questo script prima del backup con Borg e includendo la cartella che contiene i file di dump.

Ipotiziamo quindi di eseguire il dump del DB ogni giorno alle 2:00 del mattino ed eseguire successivamente alle 2:15 del mattino il backup con Borg. Per fare ciò la nostra crontab sarebbe la seguente:

				
					00 02 * * *  /usr/sbin/automysqlbackup
15 02 * * *  /home/alessandro/borg_launcher.sh
				
			

Ed il nostro script di backup assomiglierebbe al seguente:

				
					#!/bin/bash
export BORG_REPO=ssh://...
export BORG_PASSPHRASE=your-borg-passphrase
export BORG_RSH='ssh -oBatchMode=yes -i /home/alessandro/.ssh/[your-borg-ssh-key]'
date=$(date +%Y%m%d-%H%M)
archive_name="$date-full-backup"
echo "$(date +%Y-%m-%d) $(date +%H:%M)   BACKUP STARTED"
echo "$(date +%Y-%m-%d) $(date +%H:%M)   ARCHIVE NAME $archive_name"
borg create --stats ::$archive_name \
    /var/www/ \
    /var/lib/automysqlbackup/
echo "$(date +%Y-%m-%d) $(date +%H:%M)   BACKUP FINISHED"
echo
				
			
Riferimenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Most Recent

Come installare Borg su Synology NAS

Installare Borg su Synology NAS è cosa molto semplice da realizzare in quanto è possibile farlo mediante il package rilasciato da SynoCommunity. Vediamo in questa

Come ottenere l’URL corrente in Jinja2

Stiamo sviluppando una applicazione con Flask che usa Jinja2 come template engine. All’interno del template html che stiamo sviluppando abbiamo bisogno di ottenere l’URL corrente

Partners