log = /var/log/mysql/mysql.log
log-bin = /var/log/mysql/mysql-bin.log
log-error = /var/log/mysql/mysqld.err
log-update = /var/log/mysql/bdd.log
tar -cpPzvf bdd.tar.gz `find /var/log/mysql -type f -print | grep "bdd."`
for i in `find /var/lib/mysql/* -type d`; do
a=`echo $i | cut -d / -f 5`
mysqldump -u dump -pdumppass --opt $a | gzip > bdd.gz
done
rm -rf /var/log/mysql/bdd*
mysqladmin -u flush -pflushpass flush-logs
#!/bin/sh
# sauvegarde des bases de données hebdommadaire
# A modifier:
USER=xxxxx
PASS=xxxxxxxxxxxx
DESTINATION=/backup/daily/mysql
DATE=`date +%Y-%m-%d`
TIME=`date +%H:%M`
DAY=`date +%d`
DEL=`TZ=CST+24 date +%Y-%m-%d`
# backup de la semaine
mysqldump -u $USER --password=$PASS nomdelabase | gzip > $DESTINATION/nomdelabase-$TIME.$DATE.sql.gz
//répéter les 2 lignes précédentes autant de fois que de bases à sauvegarder
# efface le backup de la veille
rm -rf $DESTINATION/*.$DEL.sql.gz
#!/bin/sh
# sauvegarde des bases de données hebdommadaire
# A modifier:
USER=xxxx
PASS=xxxx
DESTINATION=/backup/weekly/mysql
DATE=`date +%Y-%m-%d`
WEEK=`date +%W`
let "DEL=$WEEK-2"
# backup de la semaine
mysqldump -u $USER --password=$PASS nomdelabase | gzip > $DESTINATION/nomdelabase-$WEEK.$DATE.sql.gz
# efface le backup vieux de 2 semaines
rm -rf $DESTINATION/*-$DEL.*.sql.gz
0 0,6,9,12,15,18,21 * * * root /usr/bin/backup-daily-bdd 2>&1 > /dev/null # Sauvegarde quotidienne des bases de données
1 0 * * 0 root /usr/bin/backup-weekly-bdd 2>&1 > /dev/null # Sauvegarde hebdomadaire des bases de données
code a dit:Personnellement j'utilise ceci et c'est vraiment simple et efficace :
Pour une sauvegarde quotidienne :
Code:#!/bin/sh # sauvegarde des bases de données hebdommadaire # A modifier: USER=xxxxx PASS=xxxxxxxxxxxx DESTINATION=/backup/daily/mysql DATE=`date +%Y-%m-%d` TIME=`date +%H:%M` DAY=`date +%d` DEL=`TZ=CST+24 date +%Y-%m-%d` # backup de la semaine mysqldump -u $USER --password=$PASS nomdelabase | gzip > $DESTINATION/nomdelabase-$TIME.$DATE.sql.gz //répéter les 2 lignes précédentes autant de fois que de bases à sauvegarder # efface le backup de la veille rm -rf $DESTINATION/*.$DEL.sql.gz
Cela se passe donc en 2 temps : Sauvegarde de (des) bases et suppression des sauvegardes de la veille (inutile de garder plus d'une journée car je fais une sauvegarde toutes les 2 heures + une sauvegarde hebdomadaire et que ce sont des tables qui ont un très grand nombre d'enregistrement par jour donc une sauvegarde de 3 jours n'a aucun intérêt)
Backup hebdommadaire pour les tables qui ont peu d'enregistrements
Code:#!/bin/sh # sauvegarde des bases de données hebdommadaire # A modifier: USER=xxxx PASS=xxxx DESTINATION=/backup/weekly/mysql DATE=`date +%Y-%m-%d` WEEK=`date +%W` let "DEL=$WEEK-2" # backup de la semaine mysqldump -u $USER --password=$PASS nomdelabase | gzip > $DESTINATION/nomdelabase-$WEEK.$DATE.sql.gz # efface le backup vieux de 2 semaines rm -rf $DESTINATION/*-$DEL.*.sql.gz
Pour la tâche cron, éditer le fichier crontab et ajouter ceci :
Code:0 0,6,9,12,15,18,21 * * * root /usr/bin/backup-daily-bdd 2>&1 > /dev/null # Sauvegarde quotidienne des bases de données 1 0 * * 0 root /usr/bin/backup-weekly-bdd 2>&1 > /dev/null # Sauvegarde hebdomadaire des bases de données
Dans le premier cas, les bases sont sauvées tous les jours à 00h00, 6h00, 9h00 etc.. dans le 2eme cas, à minuit et 1 minute tous les lundis matins