Sauvegarder MySql base/base

La commande de sauvegarde de mysql (mysqldump) permet de sauvegarder tout d’un coup

mysqldump -p --all-databases > save.toutes.mes.bases.sql

Mais il peut parfois être intéressant d’avoir un dump de chacune des bases afin de ne restaurer que ce qui est nécessaire. On peut le faire en spécifiant le nom de chaque base :

mysqldump -p base1 > save.base.numero1.sql

Mais c’est plus problématique si le nom des bases est ammené à changer souvent (machine de test ou mutualisée..). Voici donc un petit script qui fait des dumps base par base.

my_utilisateur="sauvegardeur"     # login lecture seule pour sauvegardes mysql
my_motdepasse="1234"             # mot de passe lecture seule
datearchive=$(date +%d-%m-%y)     # date format jour-mois-annee
dossierArchivage="/home/archivage" # modifier emplacement selon besoins
# se deplacer :
cd $dossierArchivage
# lister les bases :
databases=( $(mysql -u$my_utilisateur -p"$my_motdepasse" -e "show databases" | grep -v Database) )
# dump base par base et compression
for database in ${databases[@]}
do
$(mysqldump -u$my_utilisateur -p$my_motdepasse --quick --add-locks --lock-tables --extended-insert $database  > archivage-$datearchive-${database}.sql)
# compresser fichiers
tar czf archivage-$datearchive-${database}.sql.tgz  archivage-$datearchive-${database}.sql
rm  archivage-$datearchive-${database}.sql
done

C’est pratique !

Leave a comment