Web
Analytics Made Easy - StatCounter

Backup mySQL database tramite AutoMySQLBackup

backup_mysql1

Effettuare il backup dei database è fondamentale per salvaguardare i dati favorendo un restore indolore in caso di problemi. L’operazione può essere affidata a degli script che permettono di effettuare la procedura ad intervalli stabiliti a seconda delle esigenze.

Uno script molto funzionale che permette un backup dei database di mySQL con uno schema a rotazioni giornaliere, settimanali e mensili è AutoMySQLBackup, uno script open source rilasciato sotto licenza GNU General Public License.

Tramite una semplice configurazione, lo script effettua un backup dei database selezionati seguendo la rotazione scelta generando un file compresso che può essere inviato  successivamente via email. Nell’esempio, lo script è utilizzato per effettuare il backup del database utilizzato dal sistema OSSEC utilizzato per il log degli accessi ai sistemi.

 

Prerequisiti

Per il funzionamento dello script sono richiesti solo due packages:

  1. mysqldump (contenuto in mysql client)
  2. gzip or bzip2 per effettuare la compressione del file di backup

Nel caso si voglia ricevere il file tramite email, possiamo appoggiarci a ssmtp, già illustrato in un post precedente.

 

Configurazione dello script

Lo script richiede solo una semplice configurazione per il suo funzionamento. Creiamo la directory dove sarà salvato il file compresso del backup:

# mkdir /backup_db

Scarichiamo il file dal sito http://sourceforge.net/projects/automysqlbackup e lo rinominiamo in un formato più standard. Successivamente editiamo lo script per impostare i parametri che rispecchiano il nostro sistema:

# mv automysqlbackup.sh.2.5 automysqlbackup.sh
# vi automysqlbackup.sh

E’ sufficiente effettuare poche modifiche per il suo funzionamento:

Rendiamo il file dello script eseguibile:

# chmod u+rwx automysqlbackup.sh

backup_mysql2

 

Configurazione mySQL

Per poter utilizzare lo script correttamente, è necessario creare l’utente e definire i permessi che saranno richiesti per accedere al database. L’utente deve avere almeno il permesso di SELECT per tutti i database per poter effettuare correttamente il backup.

Entriamo nella console di mySQL:

backup_mysql3

Creiamo quindi l’utente ed assegniamo i permessi:

mysql> CREATE USER usrbackup@localhost IDENTIFIED BY 'newpassword';
mysql> GRANT SELECT, LOCK TABLES ON * . * TO usrbackup@localhost;
mysql> FLUSH PRIVILEGES;

Il permesso di LOCK TABLES viene assegnato per evitare un possibile errore come indicato nella figura:

backup_mysql4

A questo punto testiamo lo script:

# ./automysqlbackup.sh

backup_mysql5

 

Impostare il backup

Per rendere automatico il processo di backup, inseriamo lo script in un job di cron specificando quando lo script deve essere eseguito. Installiamo ed attiviamo il servizio cron se non ancora disponibile e impostiamo, ad esempio, l’esecuzione del backup con cadenza giornaliera da eseguire alle 22.00. Per questo scopo, lo script deve essere spostato nella directory /etc/cron.daily.

# yum install vixie-cron crontab
# mv automysqlbackup.sh /etc/cron.daily/

backup_mysql6

Editando il file /etc/crontab è possibile impostare i parametri desiderati per l’esecuzione dello script:

# vi /etc/crontab

backup_mysql7

Effettuato il primo “run”, vengono create nella directory specificata nelle impostazioni dello script (/backup_db) le sub-directory che contengono i vari backup.

backup_mysql8

I nostri database sono ora soggetti a backup. Per una migliore sicurezza dei dati, è opportuno copiare i backup in un altro storage e non lasciarli sulla stessa macchina.

automysqlbackup mysql 1