Maison > base de données > tutoriel mysql > le corps du texte

linux下mysql自动备份脚本_MySQL

WBOY
Libérer: 2016-06-01 13:47:33
original
1254 Les gens l'ont consulté

bitsCN.com

    脚本放在 /home/user/mysql_backup.sh

    crontab

    # crontab -l

    # m h  dom mon dow   command

    28 16 * * * /home/user/mysql_backup.sh

    脚本如下

    #!/bin/sh

    # mysql_backup.sh: backup mysql databases and keep newest 5 days backup.

    #

    # Last updated: 20 March 2006

    # ----------------------------------------------------------------------

    # This is a free shell script under GNU GPL version 2.0 or above

    # Copyright (C) 2006 Sam Tang

    # Feedback/comment/suggestions : http://www.real-blog.com/

    # ----------------------------------------------------------------------

    # your mysql login information

    # db_user is mysql username

    # db_passwd is mysql password

    # db_host is mysql host

    # -----------------------------

    db_user="root"

    db_passwd="password"

    db_host="localhost"

    # the directory for story your backup file.

    backup_dir="/home/mybackup"

    # date format for backup file (dd-mm-yyyy)

    time="$(date +"%d-%m-%Y")"

    # mysql, mysqldump and some other bins path

    MYSQL="/usr/local/mysql/bin/mysql"

    MYSQLDUMP="/usr/local/mysql/bin/mysqldump"

    MKDIR="/bin/mkdir"

    RM="/bin/rm"

    MV="/bin/mv"

    GZIP="/bin/gzip"

    # check the directory for store backup is writeable

    test ! -w $backup_dir && echo "Error: $backup_dir is un-writeable." && exit 0

    # the directory for story the newest backup

    test ! -d "$backup_dir/backup.0/" && $MKDIR "$backup_dir/backup.0/"

    # get all databases

    all_db="$($MYSQL -u $db_user -h $db_host -p$db_passwd -Bse show databases)"

    for db in $all_db

    do

    $MYSQLDUMP -u $db_user -h $db_host -p$db_passwd $db | $GZIP -9 > "$backup_dir/backup.0/$time.$db.gz"

    done

    # delete the oldest backup

    test -d "$backup_dir/backup.5/" && $RM -rf "$backup_dir/backup.5"

    # rotate backup directory

    for int in 4 3 2 1 0

    do

    if(test -d "$backup_dir"/backup."$int")

    then

    next_int=`expr $int + 1`

    $MV "$backup_dir"/backup."$int" "$backup_dir"/backup."$next_int"

    fi

    done

    exit 0;

    备注:

    mysql是以mysql用户身份运行的,对/home /mybackup不可写也会失败

    chmod 777 /home/mybackup问题解决了

bitsCN.com
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal