Ce script est très simple mais il permet malgré tout d'effectuer la sauvegarde de chaque schéma d'une instance MySQL dans un fichier horodaté séparé et compressé avec bzip2 (c'est avec cet algorithme que j'obtiens le meilleur taux de compression sur mes sauvegardes MySQL) . Il ne reste plus qu'à le paramétrer sous crontab (toutes les nuits par exemple) et c'est parti !
#!/bin/bash
# Script de sauvegarde MySQL v5.0
MYSQL_LOGIN=backup_login
MYSQL_PASSWORD=backup_password
BACKUP_DUMP_ROOT=/backup/mysql
echo "# Sauvegarde des Bases MySql"
echo "# DUMP=${BACKUP_DUMP_ROOT}"
timestamp="$(date +%Y%m%d-%H%M%S)"
prefix=`hostname`
# Sauvegarde de chaque Base dans un fichier
for database in `echo "show databases" | mysql -u${MYSQL_LOGIN} -p${MYSQL_PASSWORD} -N`
do
BACKUP_FILE="${BACKUP_DUMP_ROOT}/${prefix}-mysql-backup-${timestamp}-${database}.sql"
echo "#$(date +%Y%m%d-%H%M%S)# DEBUT Sauvegarde de [${database}] in [${BACKUP_FILE}]"
mysqldump --quick --add-locks --extended-insert --lock-tables --allow-keywords --default-character-set=latin1 -c -u${MYSQL_LOGIN} -p${MYSQL_PASSWORD} ${database} | bzip2 -9 > ${BACKUP_FILE}.bz
retour=$?
if [ "$retour" -eq "0" ]
then
echo "#$(date +%Y%m%d-%H%M%S)# La sauvegarde s'est correctement deroulee"
else
echo "#$(date +%Y%m%d-%H%M%S)# La sauvegarde s'est terminee en ERREUR"
fi
echo "#$(date +%Y%m%d-%H%M%S)# FIN Sauvegarde de [${database}] in [${BACKUP_FILE}]"
done
exit $retour
Voici la liste des options utilisées dans le script :
- -q | --quick
- --add-locks
- -e | --extended-insert
- --lock-tables
- --allow-keywords
- --default-character-set=latin1
- -c | --complete-insert
Pour plus d'options de paramétrage de mysqldump, n'hésitez pas à aller consulter la documentation MySQL en ligne et à partager vos trouvailles ou optimisations.
Aucun commentaire:
Publier un commentaire