## page was renamed from Server/BackupDatabaseMySql
<
>
<>
= Introduzione =
Questa guida spiega come automatizzare il backup dei database '''MySql''' attraverso un apposito script che crea e archivia i backup.
= Descrizione =
Lo script effettua giornalmente tramite [[AmministrazioneSistema/Cron|cron]] il backup di tutti i database 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 database 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.
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}}} e 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: {{{
#!/bin/bash
# Created by Beniamino Caputo
#
# Definizione Variabili
#
MY_DIR= # Directory Binari MySQL se non sono in PATH
MY_HST=localhost # Host del server MySql
MY_USR=root_mysql # Utente di MySql
MY_PWD=password_root_mysql # Password di accesso
EL_DBS=/var/backup/temp/elencodb # File Elenco Database 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 Database
#
${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 Database
#
ndb=$(wc -l < "$EL_DBS")
#
# Ciclo Dump dei Database
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 un'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.
----
CategoryServer CategoryDaRevisionare