Script backup mysql : Différence entre versions
| Ligne 1 : | Ligne 1 : | ||
| − | {{ Introduction | Ce script permet de réaliser un | + | {{ Introduction | Ce script permet de réaliser un Dump d'une base de donnée locale ou distante et de transférer ce dump vers un serveur de backup distant }} |
| − | <syntaxhighlight lang=bash> | + | ==Utilisation== |
| − | #! /bin/bash | + | <pre> |
| + | Utilisation du script : | ||
| + | Afficher l'aide | ||
| + | -u Nom de l'utilisateur de la database | ||
| + | -m Mot de passe de l'utilisateur de la database | ||
| + | -h Hote contenant la database a backuper | ||
| + | -p Port d'ecoute de la database (default: 3306) | ||
| + | -d Nom de la database | ||
| + | -n Nom du Backup (default: Nom de la database) | ||
| + | -t Chemin de sauvegarde de l hote distant | ||
| + | -v Mode verbeux | ||
| + | |||
| + | Exemple utilisation | ||
| + | script_backup_mysql -u glpi_user -m glpi -h 192.168.1.185 -d glpinew -n glpi-backup -t root@192.168.1.7:/mnt/backup_server/backup_mysql/glpinew/ | ||
| + | |||
| + | IMPORTANT | ||
| + | Pensez à copier la clef public sur le serveur que vous desirer envoyer le backup ( Pour automatiser la tache de backup) | ||
| + | [user@ordi ~]$ ssh-copy-id -i ~/.ssh/id_dsa.pub root@serveur-distant | ||
| + | </pre> | ||
| + | |||
| + | == Code == | ||
| + | <syntaxhighlight lang="bash"> | ||
| + | #!/bin/bash | ||
#Script générique pour réaliser un backup d'une base de donnee MySQL | #Script générique pour réaliser un backup d'une base de donnee MySQL | ||
#Susceptible d'etre ajouter dans une tache cron | #Susceptible d'etre ajouter dans une tache cron | ||
| − | + | ||
# Auteur : Devleeschauwer Denis | # Auteur : Devleeschauwer Denis | ||
#Date : mars 2013 | #Date : mars 2013 | ||
| − | + | ||
#Historique modification | #Historique modification | ||
| − | + | ||
| − | |||
#Couleur affichage | #Couleur affichage | ||
VERT="\\033[1;32m" | VERT="\\033[1;32m" | ||
| Ligne 21 : | Ligne 42 : | ||
JAUNE="\\033[1;33m" | JAUNE="\\033[1;33m" | ||
CYAN="\\033[1;36m" | CYAN="\\033[1;36m" | ||
| − | + | ||
#Variables globales | #Variables globales | ||
USER="" | USER="" | ||
| Ligne 28 : | Ligne 49 : | ||
PORT=0000 | PORT=0000 | ||
DATABASE="" | DATABASE="" | ||
| + | NAME="" | ||
DESTINATION="" | DESTINATION="" | ||
VERBOSE=0 | VERBOSE=0 | ||
| − | + | ||
| − | |||
function usage(){ | function usage(){ | ||
echo -e "Utilisation du script :" | echo -e "Utilisation du script :" | ||
| Ligne 40 : | Ligne 61 : | ||
echo -e "-p\tPort d'ecoute de la database (default: 3306)" | echo -e "-p\tPort d'ecoute de la database (default: 3306)" | ||
echo -e "-d\tNom de la database" | echo -e "-d\tNom de la database" | ||
| + | echo -e "-n\tNom du Backup (default: Nom de la database)" | ||
echo -e "-t\tChemin de sauvegarde de l hote distant" | echo -e "-t\tChemin de sauvegarde de l hote distant" | ||
echo -e "-v\tMode verbeux" | echo -e "-v\tMode verbeux" | ||
| − | + | echo -e "\nExemple utilisation" | |
| − | echo -e "\nExemple | + | echo -e "script_backup_mysql -u glpi_user -m glpi -h 192.168.1.185 -d glpinew -n glpi-backup -t root@192.168.1.7:/mnt/backup_server/backup_mysql/glpinew/" |
| − | echo -e "script_backup_mysql - | ||
echo -e "\nIMPORTANT\nPensez à copier la clef public sur le serveur que vous desirer envoyer le backup ( Pour automatiser la tache de backup)" | echo -e "\nIMPORTANT\nPensez à copier la clef public sur le serveur que vous desirer envoyer le backup ( Pour automatiser la tache de backup)" | ||
echo -e "[user@ordi ~]$ ssh-copy-id -i ~/.ssh/id_dsa.pub root@serveur-distant" | echo -e "[user@ordi ~]$ ssh-copy-id -i ~/.ssh/id_dsa.pub root@serveur-distant" | ||
exit 0 | exit 0 | ||
| − | + | ||
} | } | ||
| − | + | ||
function verbose(){ | function verbose(){ | ||
if [ $VERBOSE -eq 1 ] | if [ $VERBOSE -eq 1 ] | ||
| Ligne 58 : | Ligne 79 : | ||
fi | fi | ||
} | } | ||
| − | + | ||
if [ $# -eq 0 ] | if [ $# -eq 0 ] | ||
then | then | ||
usage | usage | ||
fi | fi | ||
| − | + | ||
| − | + | ||
| − | while getopts u:m: | + | while getopts u:m:vp:h:d:n:t: option |
do | do | ||
case $option in | case $option in | ||
| Ligne 82 : | Ligne 103 : | ||
d) | d) | ||
DATABASE=$OPTARG | DATABASE=$OPTARG | ||
| + | ;; | ||
| + | n) | ||
| + | NAME=$OPTARG | ||
;; | ;; | ||
t) | t) | ||
| Ligne 89 : | Ligne 113 : | ||
VERBOSE=1 | VERBOSE=1 | ||
;; | ;; | ||
| − | |||
| − | |||
| − | |||
*) | *) | ||
usage | usage | ||
| Ligne 97 : | Ligne 118 : | ||
esac | esac | ||
done | done | ||
| − | + | ||
#Changement du numero de port | #Changement du numero de port | ||
#Si pas precise alors port = 3306 | #Si pas precise alors port = 3306 | ||
if [ $PORT -eq 0000 ] | if [ $PORT -eq 0000 ] | ||
| − | + | then | |
PORT=3306 | PORT=3306 | ||
| − | + | fi | |
| − | + | ||
#Assignation du fichier de backup et generation de la date | #Assignation du fichier de backup et generation de la date | ||
| − | DATE=`date +"%Y"-"%m"-"%d"` | + | if [ "$NAME" = "" ] |
| − | NAME_FILE=${DATABASE}-${DATE}.bck | + | then |
| − | + | DATE=`date +"%Y"-"%m"-"%d"` | |
| − | verbose "\nListing des parametres :\n\tUser : $USER\n\tMot de passe : $PWD\n\tHote : $HOST\n\tPort : $PORT\n\tDatabase : $DATABASE\n\tDestination : $DESTINATION" | + | NAME_FILE=${DATABASE}-${DATE}.bck |
| − | + | else | |
| + | DATE=`date +"%Y"-"%m"-"%d"` | ||
| + | NAME_FILE=${NAME}-${DATE}.bck | ||
| + | fi | ||
| + | verbose "\nListing des parametres :\n\tUser : $USER\n\tMot de passe : $PWD\n\tHote : $HOST\n\tPort : $PORT\n\tDatabase : $DATABASE\n\tNom : $NAME_FILE\n\tDestination : $DESTINATION" | ||
| + | |||
verbose "\nRequete SQL : mysqldump -h $HOST -P $PORT -u $USER -p$PWD $DATABASE > /tmp/$NAME_FILE" | verbose "\nRequete SQL : mysqldump -h $HOST -P $PORT -u $USER -p$PWD $DATABASE > /tmp/$NAME_FILE" | ||
| − | + | ||
#Dump de la database | #Dump de la database | ||
mysqldump -h $HOST -P $PORT -u $USER -p$PWD $DATABASE > /tmp/$NAME_FILE | mysqldump -h $HOST -P $PORT -u $USER -p$PWD $DATABASE > /tmp/$NAME_FILE | ||
| − | + | ||
if [ $? != 0 ] | if [ $? != 0 ] | ||
then | then | ||
| Ligne 122 : | Ligne 148 : | ||
verbose "Dump Database \t\t\t$VERT[OK]$NORMAL" | verbose "Dump Database \t\t\t$VERT[OK]$NORMAL" | ||
fi | fi | ||
| − | + | ||
#Copie du dump vers le serveur renseigne en parametre | #Copie du dump vers le serveur renseigne en parametre | ||
verbose "\nCommande Transfert : scp /tmp/$NAME_FILE $DESTINATION" | verbose "\nCommande Transfert : scp /tmp/$NAME_FILE $DESTINATION" | ||
| − | + | scp /tmp/$NAME_FILE $DESTINATION > /dev/null 2>&1 | |
| − | + | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
if [ $? != 0 ] | if [ $? != 0 ] | ||
then | then | ||
| Ligne 139 : | Ligne 159 : | ||
verbose "Transfert Dump \t\t\t$VERT[OK]$NORMAL" | verbose "Transfert Dump \t\t\t$VERT[OK]$NORMAL" | ||
fi | fi | ||
| − | + | ||
#Suppresion du dump local | #Suppresion du dump local | ||
rm -f /tmp/$NAME_FILE | rm -f /tmp/$NAME_FILE | ||
| − | + | ||
if [ $? != 0 ] | if [ $? != 0 ] | ||
then | then | ||
| Ligne 150 : | Ligne 170 : | ||
fi | fi | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | [[Catégorie: | + | |
| + | [[Catégorie:Database]] | ||
Version du 13 mars 2014 à 13:46
Ce script permet de réaliser un Dump d'une base de donnée locale ou distante et de transférer ce dump vers un serveur de backup distant
Utilisation
Utilisation du script : Afficher l'aide -u Nom de l'utilisateur de la database -m Mot de passe de l'utilisateur de la database -h Hote contenant la database a backuper -p Port d'ecoute de la database (default: 3306) -d Nom de la database -n Nom du Backup (default: Nom de la database) -t Chemin de sauvegarde de l hote distant -v Mode verbeux Exemple utilisation script_backup_mysql -u glpi_user -m glpi -h 192.168.1.185 -d glpinew -n glpi-backup -t root@192.168.1.7:/mnt/backup_server/backup_mysql/glpinew/ IMPORTANT Pensez à copier la clef public sur le serveur que vous desirer envoyer le backup ( Pour automatiser la tache de backup) [user@ordi ~]$ ssh-copy-id -i ~/.ssh/id_dsa.pub root@serveur-distant
Code
#!/bin/bash
#Script générique pour réaliser un backup d'une base de donnee MySQL
#Susceptible d'etre ajouter dans une tache cron
# Auteur : Devleeschauwer Denis
#Date : mars 2013
#Historique modification
#Couleur affichage
VERT="\\033[1;32m"
NORMAL="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
BLANCLAIR="\\033[1;08m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
#Variables globales
USER=""
PWD=""
HOST=""
PORT=0000
DATABASE=""
NAME=""
DESTINATION=""
VERBOSE=0
function usage(){
echo -e "Utilisation du script :"
echo -e "\tAfficher l'aide"
echo -e "-u\tNom de l'utilisateur de la database"
echo -e "-m\tMot de passe de l'utilisateur de la database"
echo -e "-h\tHote contenant la database a backuper"
echo -e "-p\tPort d'ecoute de la database (default: 3306)"
echo -e "-d\tNom de la database"
echo -e "-n\tNom du Backup (default: Nom de la database)"
echo -e "-t\tChemin de sauvegarde de l hote distant"
echo -e "-v\tMode verbeux"
echo -e "\nExemple utilisation"
echo -e "script_backup_mysql -u glpi_user -m glpi -h 192.168.1.185 -d glpinew -n glpi-backup -t root@192.168.1.7:/mnt/backup_server/backup_mysql/glpinew/"
echo -e "\nIMPORTANT\nPensez à copier la clef public sur le serveur que vous desirer envoyer le backup ( Pour automatiser la tache de backup)"
echo -e "[user@ordi ~]$ ssh-copy-id -i ~/.ssh/id_dsa.pub root@serveur-distant"
exit 0
}
function verbose(){
if [ $VERBOSE -eq 1 ]
then
#Affichage de debug
echo -e "$1"
fi
}
if [ $# -eq 0 ]
then
usage
fi
while getopts u:m:vp:h:d:n:t: option
do
case $option in
u)
USER=$OPTARG
;;
m)
PWD=$OPTARG
;;
h)
HOST=$OPTARG
;;
p)
PORT=$OPTARG
;;
d)
DATABASE=$OPTARG
;;
n)
NAME=$OPTARG
;;
t)
DESTINATION=$OPTARG
;;
v)
VERBOSE=1
;;
*)
usage
;;
esac
done
#Changement du numero de port
#Si pas precise alors port = 3306
if [ $PORT -eq 0000 ]
then
PORT=3306
fi
#Assignation du fichier de backup et generation de la date
if [ "$NAME" = "" ]
then
DATE=`date +"%Y"-"%m"-"%d"`
NAME_FILE=${DATABASE}-${DATE}.bck
else
DATE=`date +"%Y"-"%m"-"%d"`
NAME_FILE=${NAME}-${DATE}.bck
fi
verbose "\nListing des parametres :\n\tUser : $USER\n\tMot de passe : $PWD\n\tHote : $HOST\n\tPort : $PORT\n\tDatabase : $DATABASE\n\tNom : $NAME_FILE\n\tDestination : $DESTINATION"
verbose "\nRequete SQL : mysqldump -h $HOST -P $PORT -u $USER -p$PWD $DATABASE > /tmp/$NAME_FILE"
#Dump de la database
mysqldump -h $HOST -P $PORT -u $USER -p$PWD $DATABASE > /tmp/$NAME_FILE
if [ $? != 0 ]
then
verbose "Dump Database \t\t\t$ROUGE[KO]$NORMAL"
else
verbose "Dump Database \t\t\t$VERT[OK]$NORMAL"
fi
#Copie du dump vers le serveur renseigne en parametre
verbose "\nCommande Transfert : scp /tmp/$NAME_FILE $DESTINATION"
scp /tmp/$NAME_FILE $DESTINATION > /dev/null 2>&1
if [ $? != 0 ]
then
verbose "Transfert Dump \t\t\t$ROUGE[KO]$NORMAL"
else
verbose "Transfert Dump \t\t\t$VERT[OK]$NORMAL"
fi
#Suppresion du dump local
rm -f /tmp/$NAME_FILE
if [ $? != 0 ]
then
verbose "Suppression Dump local \t\t$ROUGE[KO]$NORMAL"
else
verbose "Suppression Dump local \t\t$VERT[OK]$NORMAL"
fi