Backuper toutes mes DB MySQL sur un serveur distant

Ça fait longtemps que je cherche un truc simple qui puisse me permettre de faire un backup à chaque jours de mes bases de données pour mes projets en développements, et ce, sur un serveur distant*. En cas de problème au moins je ne perdrais pas le schéma et les données initiales qui seraient dans les tables de ces DB.

Donc sans plus attendre :

#!/bin/bash
MYSQLUSER=root;
MYSQLPASS=root;
SSH=user@backup.server.com;
for I in $(mysql -e 'show databases' -u $MYSQLUSER --password=$MYSQLPASS -s --skip-column-names);
    do mysqldump -u $MYSQLUSER --password=$MYSQLPASS $I | gzip -c | ssh $SSH "cat > /home/user/mysqlbackups/$I-`date +%Y_%W`.sql.gz";
done

Voici un résumé de ce que ça fait :

  • Pour chaque nom de database mysql,
  • faire un mysqldump
  • gzipper (compresser) le output de mysqldump
  • Envoyer par SSH le output de gzip dans un fichier nommé selon le format “dbname-2010_52.sql.gz” (où 2010 est l’année et 52 est la semaine (00-52)) vers le serveur distant,
  • dans le répertoire spécifié (/home/user/mysqlbackups/)

Je met ce code dans un fichier mysqlbackup.sh auquel je permet l’exécution (chmod a+x mysqlbackup.sh).
Ensuite, j’ajoute une entrée à mon crontab (Mac OS ici) pour que ce script soit exécuté à tous les jours à 14h00 :

0 14 * * *                 /Users/juliend2/scripts/mysqlbackup/mysqlbackup.sh



*Vous cherchez un bon serveur? Ces jours cis je suis comblé de bonheur avec WebFaction.


7 Mar 2010, 10:57am Uncategorized leave a comment |