Petit script de DUMP des bases mysql pour les restaurer jusqu’à 30 jours
Préparation
Création d’un utilisateur mysql n’ayant que le droit de faire des dump
CREATE USER 'dump'@'localhost' IDENTIFIED BY 'MotDePAssEBetonEtLonG';
GRANT SELECT , SHOW DATABASES , LOCK TABLES , SHOW VIEW ON * . * TO 'dump'@'localhost' IDENTIFIED BY 'MotDePAssEBetonEtLonG' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
Création du répertoire d’accueil des dumps
# mkdir /var/backups/mysql
Source du script mysql_dump.sh
#!/bin/bash
# Impiré d'un script trouvé sur phpnews.fr
# Repris par David Mercereau david [point] mercereau [at] gmail [point] com
# Déclaration de l'utilisateur MySQL aux droits suffisants pour parcourir vos bases de données
my_utilisateur='dump'
my_motdepasse='MotDePassEBetonEtLonG'
# Répertoire de stockage des dump
rep="/var/backups/mysql/"
# On définit le nom du dump (ici la date jusqu'à la minute)
dossier="dump_`date +%d`.`date +%m`.`date +%y`@`date +%H`h`date +%M`"
# On crée sur le disque un répertoire temporaire
mkdir "$rep/$dossier"
# On place dans un tableau le nom de toutes les bases de données du serveur
# On peut choisir ici d'exclure certaines bases de données de la sauvegarde grâce à la clause LIKE
# Ex : -e "show databases LIKE 'blog_%'"
databases=( $(mysql -u $my_utilisateur -p"$my_motdepasse" -e "show databases" | grep -v Database) )
# On dump base par base
for database in ${databases[@]}
do
$(mysqldump -u $my_utilisateur -p$my_motdepasse --quick --add-locks --lock-tables --extended-insert $database > ${rep}${dossier}/${database}.sql)
done
# Compression
cd $rep
tar -cvzf ${dossier}.tar.gz $dossier/
chmod 600 ${dossier}.tar.gz
# Suppression repertoire temporaire
rm -rf $dossier/
# Ménage dans les vieux dump
echo "Suppression des vieux dump"
find $rep -mtime +30 -print -exec rm {} \;
Ajouter en tâche cron
De cette manière nous allons lancer ce script tous les jours à 4 heures du matin
$ crontab -e
Ajouter ceci
0 4 * * * nice -n 19 /chemin/du/script/mysql_dump.sh
