Automazione di database SQL mediante script

Sai realizzare una LAMP seguendo i consigli di questo articolo ? Ci sono operazioni di routine che potebbero essere automatizzate! Un esempio? Il backup periodico di tutti i database SQL collegati ai tuoi rispettivi siti dinamici all’interno del tuo server… leggi per capire come fare!

GLI SCRIPT E L’AUTOMAZIONE: ACCOPPIATA VINCENTE

Uno script è sostanzialmente un programma, o meglio, un insieme di comandi raccolti in un file di testo che può essere utilizzato per varie finalità: per esempio per compiere azioni ripetitive in una singola esecuzione, risparmiandoci tempo e fatica. Un utilizzo assai utile può essere ad esempio quello di backup

BACKUP DEI DATABASE SQL DEL PROPRIO SERVER

Supponiamo ad esempio di avere un server LAMP con parecchi virtual host nei quali sono installati dei rispettivi CMS (WordPress, Drupal, ecc…) e che questi a loro volta facciano girare dei web site: sebbene esistano strumenti che integrino strumenti per esportazione dei database (per esempio phpMyAdmin)…effettuare un login ogni volta ed esportarli uno per uno può essere faticoso! Utilizziamo invece uno script ad hoc!

UNO SCRIPT MAGICO!

Il seguente script ti aiuterà a compiere l’archiviazione (è una modifica di quello presente su Cibercity.biz) … occorre semplicemente creare una directory apposita (nell’esempio: “cronbackupsql”) all’interno del server che ospita la nostra LAMP (per esempio in /root) ed avere ovviamente l’username & la password utilizzate per il collegamento al CMS (le stesse che utilizzeremmo per phpMyAdmin). Vediamo il procedimento assieme:

# mkdir /root/cronbackupsql

Supponendo come user: fabrizio e pass: 123456

# cd /root

# touch /root/mysqlbackupper.sh

MyUSER="fabrizio"    	  # USERNAME
MyPASS="123456"  # PASSWORD
MyHOST="localhost"        # Hostname
 
# Linux bin paths, change this if it can't be autodetected via which command
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"
 
# Backup Dest directory, change this if you have someother location
DEST="/root/cronbackupsql"
 
# Main directory where backup will be stored
MBD="$DEST"
 
# Get hostname
HOST="$(hostname)"
 
# Get data in dd-mm-yyyy format
NOW="$(date +"%d-%m-%Y")"
 
# File to store current backup file
FILE=""
# Store list of databases
DBS=""
 
# DO NOT BACKUP these databases
IGGY="test"
 
[ ! -d $MBD ] && mkdir -p $MBD || :
 
# Only root can access it!
$CHOWN 0.0 -R $DEST
$CHMOD 0600 $DEST
 
# Get all database list first
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
 
for db in $DBS
do
    skipdb=-1
    if [ "$IGGY" != "" ];
    then
	for i in $IGGY
	do
	    [ "$db" == "$i" ] && skipdb=1 || :
	done
    fi
 
    if [ "$skipdb" == "-1" ] ; then
	FILE="$MBD/$db.$HOST.$NOW.gz"
	# do all inone job in pipe,
	# connect to mysql using mysqldump for select mysql database
	# and pipe it out to gz file in backup dir :)
        $MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
    fi
done

Salviamo adesso il file dentro /root ed avviamolo da tale directory con:

# ./mysqlbackupper.sh

Fatto! Al termine del processo troveremo i nostri database comodamente compressi direttamente all’interno di /root/cronbackupsql !

Ti è piaciuto l’articolo? Per suggerimenti, lavori, proposte, contattami!

Articolo creato 44

Lascia un commento

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

Articoli correlati

Inizia a scrivere il termine ricerca qua sopra e premi invio per iniziare la ricerca. Premi ESC per annullare.

Torna in alto