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
Leave a comment