Dumpmysql.sh
De wikiGite
Révision datée du 5 juin 2012 à 17:43 par Frank (discussion | contributions)
Voir Mise_à_jour_automatique_des_scripts pour la création automatique du script /opt/systools/dumpmysql.sh :
#!/bin/bash # FSo 2010 # V1.3 # The script and its config file must be placed in /opt/systools directory # or change line bellow
if [ -f $(dirname $0)/dumpmysql.conf ] then . $(dirname $0)/dumpmysql.conf else echo "$(dirname $0)/dumpmysql.conf introuvable !" exit 1 fi
ERROR=""
if [ ! -d $BACKUP_DIR ]
then
mkdir -p $BACKUP_DIR
fi
cd $BACKUP_DIR
date > /opt/systools/dumpmysql.log
IFS=$'\n'
for DB in $BASE
do
echo "dump $DB" >>/opt/systools/dumpmysql.log
mysqldump "$DB" $DUMP_OPTS --password=$PASSWORD > my_${HOST}_"${DB}"_${JOUR}.sql 2>>/opt/systools/dumpmysql.log
if [ $? -ne 0 ]
then
if [ "$ERROR" == "" ]
then
ERROR=$DB
else
ERROR=${ERROR},$DB
fi
else
rm -f my_${HOST}_"${DB}"_${JOUR}.sql.gz 2>>/opt/systools/dumpmysql.log
gzip my_${HOST}_"${DB}"_${JOUR}.sql 2>>/opt/systools/dumpmysql.log
fi
done
if [ "$ERROR" != "" ]
then
(
echo "Subject: Mysqldump $(hostname) : $ERROR dump failed"
cat /opt/systools/dumpmysql.log
) | /usr/sbin/sendmail $REPORT_EMAIL
fi
date >>/opt/systools/dumpmysql.log
Puis créer un fichier de config dumpmysql.conf
# FSo 2010 # dumpmysql.sh config file # v1.1 REPORT_EMAIL=<mail de l'admin> HOST=$(hostname) PASSWORD=<mot de passe mysql> SCRIPT_DIR=/opt/systools BACKUP_DIR=/home/backup LOG=$SCRIPT_DIR/dumpmysql.log JOUR=$(date +%w) # One base #BASE=<une base> # or some bases, separated by newline #BASE="plusieurs #bases #une #par #ligne" # OR all databases except mysql BASE=$(mysql --execute "show databases\G" --password=$PASSWORD | grep -v row | sed -e 's/Database: //g' | grep -v mysql | grep -v information_schema | grep -v performance_schema) # Some options required #DUMP_OPTS="" DUMP_OPTS="--routines"
Modifier le host, le mot de passe, et commenter/décommenter selon qu'on veut une sauvegarde de une ou quelques bases, ou toutes les bases, et si on veut ajouter des options à mysqldump (notamment, "--routines" est nécessaire en v5 pour sauvegarder aussi les procédures et fonctions, mais n'est pas reconnue en v4).
Ne pas oublier un minimum de protection
chmod 600 dumpmysql.conf
Si ça n'a pas déjà été fait (par maj_script.sh par exemple), planifier la sauvegarde par un lien dans /etc/cron.daily
ln -s /opt/systools/dumpmysql.sh /etc/cron.daily/dumpmysql
et la lancer une première fois manuellement
/etc/cron.daily/dumpmysql ls -l /home/backup
