Linux : Script simple pour backup de bases de données MySQL
J’ai écrit un petit script simple pour faire un backup complet de toutes les bases de données MySQL qui sont sur le système.
Il suffit de créer un fichier avec le code suivant en modifiant « utilisateur » et « motdepasse » en fonction de ton système (l’utilisateur ici doit avoir un accès aux bases de données).
Ensuite, tu rends le code exécutable (chmod +x lescript
), puis tu l’execute en root (ou en utilisateur normal si t’as les droits sur le répertoire défini ci-dessous).
#! /bin/sh DATE=`date '+%Y.%m.%d'` # définition de la date FOLDER=/home/backups # définition du répertoire où sauvegarder MYSQLUSER=utilisateur # utilisateur msyql ... MYSQLPASSWD=motdepasse # ... et son mot de passe DATABASES=`mysql -u $MYSQLUSER -p$MYSQLPASSWD -e 'SHOW DATABASES' | sed '1,2d'` # définition de la liste des bases [ -d $FOLDER ] || mkdir $FOLDER # On commence par créer le répertoire défini plus haut s'il n'existe pas. for i in $DATABASES; do echo "Dumping $i... database" in $FOLDER ; mysqldump -u $MYSQLUSER -p$MYSQLPASSWD $i > $FOLDER/$i.$DATE.sql ; # voici le dumping MySQL dans une boucle for done echo "`echo $DATABASES | wc -w` Databases were backed up in $FOLDER"
Note à propos de la définition de la variable DATABASES
: le sed à la fin permet de supprimer les deux premières lignes, ici ?Databases
et information_schema
qu’on ne va pas utiliser. Pour mieux comprendre, exécute la commande
mysql -u user -p -e 'SHOW DATABASES'
ou
mysql -u user -p -e 'SHOW DATABASES' | cat
(pour un format traité par bash)
Il est tout à fait possible de faire en sorte qu’il s’exécute automatiquement, il suffit de placer ce script dans le bon répertoire Cron : /etc/cron.hourly/
, /etc/cron.daily/
, /etc/cron.weekly/
, /etc/cron.monthly/