Come eseguire il backup del container mariadb

In rilievo

Per eseguire in tranquillità le operazioni di manutenzione del sito, come l’aggiornamento dei plugin o del wordpress medesimo, si è reso necessario il backup locale del database, tramite il salvataggio in un file SQL.

Per effettuare il backup del database presente nel container docker, è necessario soltanto il comando sottostante:

docker-compose exec -T mariadb sh -c 'exec mysqldump "$MYSQL_DATABASE" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD"'
Code language: JavaScript (javascript)

mariadb è il nome del servizio presente nel file docker-compose.yml

Alternativamente il seguente è il comando equivalente se non usiamo docker-compose, wordpress_mariadb_1 è il nome del container:

docker exec wordpress_mariadb_1 sh -c 'exec mysqldump "$MYSQL_DATABASE" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD"'
Code language: JavaScript (javascript)

Il comando mostrerà sullo standard output il dump SQL del database, per salvarlo in un file dovrà essere aggiunto al termine del comando " > nome_file.sql"

Per semplificare la creazione del backup è stato creato uno shell script in maniera similare a quanto fatto nell’articolo Come esportare i certificati di traefik.

#!/bin/sh cd /srv/wordpress/ DATE=`date +"%Y-%m-%d"` FILENAME="database_${DATE}.sql" docker-compose exec -T mariadb sh -c 'exec mysqldump "$MYSQL_DATABASE" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD"' > database_backup/$FILENAME
Code language: PHP (php)

Riga 5 – Salva la data odierna in una variabile, nel formato %Y-%m-%d, es. 2021-09-26
Riga 6 – Salva in una variabile il nome del file formattato con la data, es. database_2021-09-26.sql
Riga 8 – Esegue il comando per ricevere il dump del database ed indica come percorso di salvataggio la cartella database_backup/ e la variabile della riga 6

Esecuzione automatica

Possiamo usare crontab per automatizzare l’esecuzione periodica dello script precedentemente creato.

# "crontab -e" è solitamente il comando modificare crontab 0 0 * * 0 /usr/bin/sh /srv/wordpress/backup-database.sh >/dev/null 2>&1
Code language: PHP (php)

Il valore 0 0 * * 0 esegue il comando ogni domenica alla mezzanotte.