Sauvegarder son serveur MySql base par base
Par placeoweb, jeudi 26 juin 2008 à 00:39 :: SQL :: #127 :: rss
Lorsque vos données grandissent trop vite et que votre mysqldump --all-databases génère des fichiers trop volumineux, il est temps de passer à une sauvegarde bases par bases de données.
Initialement, j'utilisais :
mysqldump --host="$MYSQL_HOST" --user="$MYSQL_LOG" --password="$MYSQL_PASS" --quote-names --complete-insert --extended-insert --add-drop-table --compress --all-databases > monFichierDumpContenantTouteLesBases.sql
Mais mon fichier intégral de 3Go est impossible à gérer pour ré-intégrer une seule base.
Voici donc un script pour dumper base par base : bak_mysql_dump_parBases.sh :
#!/bin/bash
export BACKUPDIR=~/BackMySqlParBases/
export BTMPFILE=~/BackMySqlParBases.tmp
export DATE=`/bin/date '+%Y%m%d'`
export MYSQL_HOST="localhost"
export MYSQL_USER="monUserMysql"
export MYSQL_PASS="monPassMysql"
[ -d $BACKUPDIR ] || mkdir -p $BACKUPDIR
mysql -h ${MYSQL_HOST} -u ${MYSQL_USER} -p${MYSQL_PASS} > ${BTMPFILE} <<EOT
SHOW DATABASES;
EOT
if [ -f ${BTMPFILE} ] ; then
for db in `cat ${BTMPFILE} | egrep -v "Database|information_schema"`
do
echo $db
export FILEBK=$db.$DATE.sql
mysqldump -h ${MYSQL_HOST} -u ${MYSQL_USER} -p${MYSQL_PASS} $db > $BACKUPDIR/$FILEBK
#[ -f $BACKUPDIR/$FILEBK ] && gzip --force --best $BACKUPDIR/$FILEBK
#[ -f $BACKUPDIR/$FILEBK.gz ] && scp $BACKUPDIR/$FILEBK.gz $HOST:$BACKUPDIR/
done
fi
Et pour finir, l'automatisation par cron :
# Dump BASE PAR BASE
# Suppression des vieux fichiers
30 02 * * * find ~/BackMySqlParBases -mtime +3 -type f -exec rm -fv {} \;
# Dump
45 02 * * * ./bak_mysql_dump_parBases.sh
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.