Un exemple simplisme de script automatisant la sauvegarde des bases de donnée mysql de votre serveur sur un stockage amazon S3.
Ce script nécessite d'avoir un compte sur Amazon Simple Storage Service. Allez sur la page Amazon S3 homepage, cliqué sur le bouton "Sign up for web service" et inscrivez vous. Vous devrez fournir votre carte de crédit et en autorisé le débit en fonction de l'utilisation que vous ferez du service. Suite à cette inscription vous posséderez une clé d' access et une clé Secrete vous permettant d'accéder au service.
Vous devez également avoir installé le paquet debian s3cmd
apt-get install s3cmd
Votre clé d' access et votre clé Secrete à disposition lancer la commande suivante pour configurer vos outils s3cmd et leur donner accès à Amazon
s3cmd --configure
Enfin le script, des plus simple, non ?
#!/bin/bash # # Mot de passe Mysql $MDP="Mots de passe Mysql" # ex : 1.2010-03-01_14h48 DayNameDump=`date +%w.%Y-%m-%d_%Hh%M`; # Monday = 1 etc.. DayInWeek=`date +%w`; # Pour Chaque DB de mysql sauf Database|information_schema|mysql for I in `mysql -p$MDP -B -e "show databases;" | egrep -v '(Database|information_schema|mysql)'`; do # Création du répertoire de backup local pour chaque base MSG=`mkdir -p /vars/backups/$I 2>&1`; logger -t [SQLBACKUP] Create Backup Directory: $MSG; # Efface le backup de même jour de semaine éxistant déjà # On ne concerve donc que 7 jours glissant de backup en local MSG=`rm /var/backups/$I/$HOSTNAME.$DayInWeek.* 2>&1`; logger -t [SQLBACKUP] Clean Old Backup: $MSG; # Dump des bases présent sauf les exeptions, ceci en mode transactionnel, # gzip du fichier sql au taux de compression le plus fort MSG=`mysqldump --single-transaction -p$MDP -u root $I | gzip -cq9 > \ /var/backups/$I/$HOSTNAME.$DayNameDump.sql.gz 2>&1`; logger -t [SQLBACKUP] Mysqldump: $MSG; # Copie dans le bucket courant MSG=`s3cmd put /var/backups/$I/$HOSTNAME.$DayNameDump.sql.gz \ s3://backup.perso.bucket./$I/$HOSTNAME.$DayNameDump.sql.gz 2>&1`; logger -t [SQLBACKUP] Put to S3 backup.perso.bucket: $MSG; done;