16 novembre 2012

Script : Sauvegarde de bases MySQL

Ce script sauvegarde les bases de données MySQL en générant dans le répertoire “BACKUPDIR” un fichier par base de donnée.
Les fichiers générés sont au format “BACKUPDIR/DATE.NOMBASE.sql”.
 =========================================================================
#!/bin/bash
 
# Script de sauvegarde des bases MySQL.
# By SEBIHI YACINE
# Sauvegarde les bases de données MySQL sous 
# sous forme d'un fichier par base.
# 
 
# Définition des variables de connexion :
MYSQLUSER="root" ;
MYSQLPASS="Mot de passe" ;
MYSQLHOST="localhost" ;
MYSQLPORT="3306" ;
 
# Options MySQL Dump :
MYSQLDUMPOPTS="--add-drop-database --add-drop-table --create-options"
 
# Définition du répertoire de sauvegarde :
BACKUPDIR="/tmp/mysql" ;
 
# Définition des binaires :
MYSQL="/usr/bin/mysql" ;
MYSQLDUMP="/usr/bin/mysqldump" ;
MYSQLADMIN="/usr/bin/mysqladmin" ;
MKDIR="/bin/mkdir" ;
 
DATE="/bin/date" ;
 
# Format de la date sans espaces (voir man date) :
# Exemple "%Y%m%d"
DATEFORMAT="%s" ;
 
## FONCTIONS
 
# Fonction de sortie de script :
die() {
        echo $@ >&2 ;
        exit 1 ;
}
 
# Fonction de test des binaires :
check_binaries() {
[ -x ${MYSQL} ] || die "File \"${MYSQL}\" not found ! Check definition in ${0}." ;
[ -x ${MYSQLDUMP} ] || die "File \"${MYSQLDUMP}\" not found ! Check definition in ${0}."
[ -x ${MYSQLADMIN} ] || die "File \"${MYSQLADMIN}\" not found ! Check definition in ${0}."
[ -x ${DATE} ] || die "File \"${DATE}\" not found ! Check definition in ${0}." ;
[ -x ${MKDIR} ] || die "File \"${MKDIR}\" not found ! Check definition in ${0}." ;
}
 
# Fonctions de sauvegarde :
backup() {
 ${MYSQLADMIN} -s --host=${MYSQLHOST} --port=${MYSQLPORT} -u ${MYSQLUSER} 
--password=${MYSQLPASS} ping 2>&1 > /dev/null ;
 [ $? -eq 0 ] || die "Impossible to connect ${MYSQLHOST}:${MYSQLPORT}." ;
# Si le répertoire des sauvegardes n'existe pas il est créé :
 [ ! -d ${BACKUPDIR} ] && ${MKDIR} -p ${BACKUPDIR} ;
#  Pour chaque base,
 for db in `${MYSQL} --host=${MYSQLHOST} --port=${MYSQLPORT} -u ${MYSQLUSER} 
--password=${MYSQLPASS} -sBe 'show databases'` ; do
#   Création d'un fichier de dump au format BACKUPDIR/DATE_FORMAT_DATEFORMAT.NOM_BASE.sql
  ${MYSQLDUMP} ${MYSQLDUMPOPTS} --host=${MYSQLHOST} --port=${MYSQLPORT} -u ${MYSQLUSER} \
    --password=${MYSQLPASS} ${db} --result-file="${BACKUPDIR}/$(${DATE} +${DATEFORMAT}).${db}.sql" ;
        done
}
 
# Main corp du script :
check_binaries ;
backup ;
=================================================================================== 

Aucun commentaire :

Enregistrer un commentaire