Sauvegarder ses bases de données MySQL
Aujourd’hui, je suis confronté à un problème qui m’oblige à exporter/sauvegarder les bases de données MySQL d’un client sur un serveur Ubuntu. Néanmoins, le client voulait un fichier dump par base de données pour pouvoir restaurer une par une ses bases et comme il y en avait beaucoup je ne pouvais pas me permettre de le faire à la main via Phpmyadmin. Alors je vous propose mon script au passage.
Dans un premier temps, créer un fichier sh et copier le contenu suivant :
#! /bin/bash
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/Ton_dossier/$TIMESTAMP"
MYSQL_USER="" #Ton user
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="" #Ton mot de passe
MYSQLDUMP=/usr/bin/mysqldump
mkdir -p "$BACKUP_DIR/mysql"
#Recuperation des noms des bases de donnees et exclusion de celle qu'on ne veut pas
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|sys|mysql)"`
cd "$BACKUP_DIR/mysql"
for db in $databases; do
echo Backup de la base $db :
#Creation du backup
$MYSQLDUMP --user=$MYSQL_USER -p$MYSQL_PASSWORD $db > $db.sql
#Zip du backup
zip $db.zip $db.sql -m
done
Une fois votre fichier créée, rendez-le éxécutable à l’aide de la commande suivante :
chmod u+x votrefichier.sh
Enfin, modifier le script. En effet, en haut du script se trouve plusieurs variables que vous devez renseigner qui sont :
- BACKUP_DIR : Remplacer Ton_dossier par le dossier ou vous voulez stocker vos dump
- MYSQL_USER : je pense que c’est assez clair, il s’agit de votre utilisateur MySQL (un utilisateur qui a les droits sur toutes les bases bien entendu)
- MYSQL_PASSWORD : le mot de passe de votre compte MySQL
Le script va donc créer un dossier mysql dans votre BACKUP_DIR avec la date du jour. Puis il va créer un fichier ZIP avec comme nom la base de données (comme elle est renseigné dans Phpmyadmin) avec à l’intérieur le fichier dump au format SQL. Il ne vous restera plus qu’a récupérer le fichier fichier ZIP.
Bien entendu, vous pouvez utiliser le script dans une tache cron afin que celui-ci s’éxécute tous les X jours/semaine/mois/années à votre convenance.
Vous pouvez aussi modifier la partie de la commande mysqldump pour y ajouter les options que vous voulez. Pour cela la doc de MySQL à ce sujet est disponible sur internet.
Je vous laisse apprécier, c’est plutôt pratique et ça m’a sauvé la vie.