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

Tags: , ,