Heim > Datenbank > MySQL-Tutorial > Hauptteil

linux下mysql自动备份脚本_MySQL

WBOY
Freigeben: 2016-06-01 13:47:33
Original
1254 Leute haben es durchsucht

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
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage