• # Bof

    Posté par . En réponse au journal Restauration et sauvegarde MySQL. Évalué à 2.

    J'ai lu leur truc, c'est moyen, s'il y a voici mon script :
    (Si vous voyez des améliorations, je veux bien, je vais sans doute faire un autre qui fera une requête pour lister le nom des bases disponibles au lieu d'aller voir les fichiers car si on a des bases innodb par exemple, il faut bien penser que tout est dans un/plusieurs fichiers au lieu d'un répertoire unique)

    #!/bin/sh
    #
    # Script pour faire le backup des bases
    # de données MySQL
    # Exécuté par /etc/crontab
    #
    #
    backup_dir=/mnt/backup-mysql
    backup_dir_mysql=${backup_dir}/mysql
    backup_tmp=${backup_dir}/tmp
    backup_tmp_mysql=${backup_tmp}/mysql


    # répertoire de backup monté ?
    monte=`mount | grep backup-mysql | grep -v grep`

    if [ "${monte}" != "" ]; then

    mkdir -p ${backup_dir} && chmod 0700 ${backup_dir}
    mkdir -p ${backup_dir_mysql} && chmod 0700 ${backup_dir_mysql}
    mkdir -p ${backup_tmp} && chmod 0700 ${backup_tmp}
    mkdir -p ${backup_tmp_mysql} && chmod 0700 ${backup_tmp_mysql}

    date=`date -I`
    host=`hostname -s`

    # Détermine la liste des bases et les copie

    for var in `find /var/lib/mysql/ -type d | grep -v "lost+found" | \
    sed -e "s/\/var\/lib\/mysql\///"`; do
    mysqldump --opt $var > ${backup_tmp_mysql}/mysql-$var-$date-$host.sql
    done

    # Création de l'archive Tar/gzip data et
    # déplacement vers le répertoire des backups
    tar czf ${backup_tmp}/mysql-$date-$host.tar.gz -C ${backup_tmp}/ mysql/
    mv ${backup_tmp}/mysql-$date-$host.tar.gz ${backup_dir_mysql}/mysql-$host.tar.gz

    # Efface les fichiers temporaires

    rm -f ${backup_tmp}/mysql/*.sql

    fi