Da alcuni anni mi occupo di gestire dei server online basati su Ubuntu (Usano MySql e Apache) per cui basati al 100% su programmi opensource. Il problema è che spesso quando hai macchine dedicate ti devi occupare dei backups e la manutenzione dei tuoi dati.
Che si traduce semplicemente automatizzare il dump del Database e la copia di tutti i files del web server (e del dump) da qualche parte sicura, generlamente in remoto. Il resto della configurazione diciamo che non è che sia necessaria.
Per cui possiamo dividre l’articolo in due sezioni “Dump dei vari database MySql” e copia dei file con Rsync.
Creazione dello script per il Dumb dei DB MySql (scopiazzato da qui):
Creo un file dump_db.sh (di solito nella cartella bin) con l’istruzione:
vi dump_db.sh
Ci metto dentro queste istruzioni:
#!/bin/bash
USER="your_user"
PASSWORD="your_password"
OUTPUT="/users/vinny/DBs"
rm "$OUTPUTDIR/*gz" > /dev/null 2>&1
databases=`mysql --user=$USER --password=$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
for db in $databases; do
if [[ "$db" != "information_schema" ]] && [[ "$db" != _* ]] ; then
echo "Dumping database: $db"
mysqldump --force --opt --user=$USER --password=$PASSWORD --databases $db > $OUTPUT/`date +%Y%m%d`.$db.sql
gzip $OUTPUT/`date +%Y%m%d`.$db.sql
fi
done
Praticamente si collega al DB MySql, prende tutti i nomi del db e fa il dump. Da cambiare le info nelle prime tre linee.
Poi rendiamo lo script eseguibile:
chmod 700 backup.sh
Se esguiamo lo script ci verranno creati i file .gz nella cartella che abbiamo definito, in questo caso “/users/vinny/DBs”. Per farlo fare in manirea automatica inserite tutto nel cron (crontab -e)
Ora dobbiamo copiare questi file in una location remota. Io utilizzo Rsync che risparmia banda in quando copia le parti dei file modificati (nel nostro caso non sarà così efficiente per i DB).
Poi ho seguito questi due articoli per Rsync:
- https://blogs.oracle.com/jkini/entry/how_to_scp_scp_and
- https://www.digitalocean.com/community/articles/how-to-copy-files-with-rsync-over-ssh
E messo tutto in un processo cron. Ora ho un pochino da fare e rivedrò l’articolo che per adesso serve principalmente a come nota per me ma siete i benvenuti nel commentare.