Oggi vi presento uno script di Beniamino Caputo che automatizza il processo per creare ed archiviare i backup dei database MySql .
******** di Beniamino Caputo***********
Descrizione
Lo script effettua giornalmente tramite cron il backup di tutti i databases recuperando automaticamente l’elenco.
Inizialmente viene costruito il nome del set di backup da creare utilizzando l’output del comando date.
Dopo l’eventuale rimozione di un backup temporaneo precedente ottengo l’elenco dei databases tramite mysqlshow redirezionando l’output sul file EL_DBS dopo l’applicazione di una serie di filtri: head, tail e tr.
Effettuo il conteggio del numero di database e con un ciclo faccio il dump tramite mysqldump.
Al termine i backup sono raggruppati (tar) e compressi (gzip).
Installazione
Per il funzionamento è necessario creare la struttura delle directory di backup.
Si può, ad esempio, utilizzare la directory /var/backup che contiene due sottodirectory /var/backup/stored e /var/backup/temp, ma il tutto è configurabile nello script.
(NdR) é consigliabile usare una cartella che è al di fuori del nostro pc o server, per evitare la perdita dei dati in caso di rottura dei dischi oppure usare la cartella di Dropbox che è sincronizzata
Creare le directory per archiviare i backup. A titolo di esempio:
sudo mkdir /var/backup
sudo mkdir /var/backup/temp
sudo mkdir /var/backup/stored
Creare lo script myback ed inserirlo nella directory /etc/cron.daily.
Ricordarsi di modificare MY_USR e MY_PWD.
Impostare i permessi dello script:
sudo chmod 755 myback
Script
Lo script è il seguente:
[code]
# Created by Beniamino Caputo
#
# Definizione Variabili
#
MY_DIR= # Directory Binari MySQL se non sono in PATH
MY_HST=localhost # Host del MySql server
MY_USR=root_mysql # User di MySql
MY_PWD=password_root_mysql # Password di accesso
EL_DBS=/var/backup/temp/elencodb # File Elenco Databases nel Backup
BK_DIR=/var/backup/temp # Directory Backup
BK_NAM=/var/backup/stored/backup-$(date +%d-%m-%Y) # Nome del Backup (costruita automaticamente con la data)
#
# Elimino Eventuali Backup Temporanei Presenti
#
rm -f ${BK_DIR}/*
#
# Creazione Elenco Databases
#
${MY_DIR}mysqlshow –host=$MY_HST –user=$MY_USR –password=$MY_PWD | head -n -1 | tail -n +4 | tr -d " |" > $EL_DBS
#
# Conteggio Numero di Databases
#
ndb=$(wc -l < "$EL_DBS")
#
# Ciclo Dump dei Databases
#
for db in `seq $ndb`
do
read db
${MY_DIR}mysqldump –host=$MY_HST –user=$MY_USR –password=$MY_PWD –databases $db > $BK_DIR/$db
done <"$EL_DBS"
#
# Creazione File TAR
#
tar -cf $BK_NAM.tar $BK_DIR
#
# Compressione File Tar
#
gzip -f $BK_NAM.tar
#
# Elimino Eventuali Backup Temporanei Presenti
#
rm -f ${BK_DIR}/*
exit 0
Configurazione
In testa ci sono alcune variabili per eventuale configurazione:
MY_DIR: directory contenente i binari di MySql. In Ubuntu non è necessaria in quanto presente in PATH}. Nel caso di installazione manuale si può inserirla, avendo l’accortezza di terminarla con /. Esempio: MY_DIR=/path/binari/mysql/.
MY_HST: l’hostname della macchina, potrebbe essere sufficiente localhost.
MY_USR: l’utente del server MySql.
MY_PWD: la password dell’utente MySql.
EL_DBS: nome del file che conterrà l’elenco dei database.
BK_DIR: la directory temporanea per il dump dei database.
BK_NAM: nome del file di backup.
[/code]