In questo articolo vedremo come eseguire il backup di un database MySQL automaticamente ogni giorno senza eseguire sempre il comando.
Personalmente ho utilizzato questo script su CentOS 7, ma penso sia adattabile anche ad altre distro. Prima di iniziare assicuratevi di avere i privilegi di root.
La prima cosa che vedremo è il comando utilizzato per fare il backup di un database, per informazioni approfondite vi consiglio di leggere questo post di qualche tempo fa... ma ecco il comando:
mysqldump -uroot -pPassword nomedatabase > /home/backup/nomedatabase.sql
Ovviamente voi dovrete apportare qualche cambiamento a questo comando dato che la password, il nome del database e la directory potrebbero cambiare.
Per prima cosa creiamo una cartella che utilizzeremo per salvare tutti i backup:
mkdir /home/backup
Ora creiamo il nostro file script nella directory /bin
:
touch /bin/mysqlbackup.sh
successivamente apriremo il file per modificarne il contenuto:
nano /bin/mysqlbackup.sh
e ora scriviamo all'interno lo script vero e proprio:
#!/bin/sh
# mysqlbackup.sh
dataFile="$(date +"%d-%m-%Y - %H:%M:%S")"
mysqldump -uroot -pPassword nomedatabase> /home/centos/backup/nomedatabase.$dataFile.sql
Per salvare il file premete CTRL + X
, poi premete Y
per salvare, e confermate il tutto con Invio
. Ora modifichiamo i permessi del file appena modificato:
chmod 770 /bin/mysqlbackup.sh
Per verificare il funzionamento dello script, possiamo testarlo eseguendo questo comando:
sh /bin/mysqlbackup.sh
Se la prova precedente è andata a buon fine, possiamo utilizzare Crontab per far eseguire automaticamente questo script al tempo desiderato. Se volete maggiori informazioni su Crontab, Wikipedia alla mano!
La prima cosa da fare è aprire il file crontab
con questo comando:
nano /etc/crontab
Dovrebbe apparirvi una schermata simile a questa:
Per aggiungere la vostra impostazione, posizionatevi all'ultima riga scendendo con le freccette direzionali e scrivete la regola, questa è quella che ho inserito io:
0 1 * * * root /bin/mysqlbackup.sh
L'impostazione che ho inserito è impostata per far eseguire lo script ogni giorno a l'una di notte (1am). Se voi avete problemi nel definire la vostra cron schedule, vi suggerisco di utilizzare il sito crontab.guru che trovo molto utile.
Una volta fatto tutto dovreste trovarvi in una situazione più o meno come questa:
Ora salvate il file come abbiamo già visto prima e aspettate che succeda qualcosa!