[Script] Sauvegarde de bases MySQL


  • Manchot Adélie

    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 seront au format « BACKUPDIR/DATE.NOMDATABASE.sql ».

    #!/bin/bash
     
    # Script de sauvegarde des bases MySQL.
    #
    # 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 ;
    


Il semble que votre connexion ait été perdue, veuillez patienter pendant que nous vous re-connectons.