Backup automatizzato di MySql – versione molto semplificata

mysql

Per prima cosa è bene creare un account predisposto al solo backup in modo da poterlo inserire nel file .my.cnf

GRANT USAGE ON *.* TO backup@localhost IDENTIFIED BY 'UnaB3LlaPasswordSicura';
GRANT SELECT,LOCK TABLES ON *.* to backup@localhost;
FLUSH PRIVILEGES;

Questo account avrà quindi solo i diritti di lettura su tutti gli oggetti di MySql.

A questo punto creiamo anche il file .my.cnf che andrà inserito all’interno della stessa cartella in cui viene eseguito lo script di backup contenente il comando mysqldump.

cat > ~/.my.cnf << EOF
[mysqldump]
user=backup
password=UnaB3LlaPasswordSicura

[client]
user=backup
password=UnaB3LlaPasswordSicura
EOF

chmod 600 .my.cnf

A questo punto uno script molto basilare (potete migliorarlo in molti modi) è il seguente

#!/bin/bash
BACKUP_DIR=~/backup
COMMAND_DIR=~/cron
FILENAME="fulldump$(date +%F-%H%M%S)"
FILEPATH="$BACKUP_DIR/$FILENAME"
SQLFILE="$FILEPATH".sql
TARFILE="$FILEPATH".tar.gz
N=1
LOGFILE="$COMMAND_DIR/dump.log"

echo "$(date +%F-%H:%M:%S)" > "$LOGFILE"

echo  "tar file: $TARFILE" >> "$LOGFILE"
echo  "sql file: $SQLFILE" >> "$LOGFILE"

mysqldump --all-databases --routines --flush-privileges -ubackup > $SQLFILE && tar czf $TARFILE $SQLFILE && rm $SQLFILE

# Rimuovere il commento nella riga seguente dopo aver eseguito lo script 'N' volte che sono il numero di backup file che si vuole tenere.
#find $BACKUP_DIR/ -name "fulldump*.tar.gz" | sort -r | tail -$N | xargs rm -f

ls -al $BACKUP_DIR/fulldump*.tar.gz | wc -l >> "$LOGFILE"

E’ tutto. Ora basta dare i diritti di escuzione allo script e inserirlo nella crontab secondo le vostre preferenze.

Backup automatizzato di MySql – versione molto semplificata