萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> linux下mysql數據備份與自動備份實例

linux下mysql數據備份與自動備份實例

腳本放在 /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 bin's 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問題解決了


看一個在lix下定時備份mysql數據庫教程

添加backupmysqleveryday.sh(vi /data/shell/backupmysqleveryday.sh)

  #!/bin/sh

  #this shell is user for backup mysql data everyday

  #author:www.ieliwb.com

  #path-config

  base_mysql_path=/data/webserver/mysql/

  mysql_dump_path=/data/mysqlbackup/

  mnt_back_path=/mnt/web/mysqlbackup/

  ftp_back_path=mysql_data_backup/

  #mysql-config

  mysql_user=”root”

  mysql_pass=”*******”

  #ftp-config

  ftp_host=”ip”

  ftp_user=”********”

  ftp_pass=”********”

  backup_name=`date +%y%m%d%h%m%s`

  cd ${mysql_dump_path}

  #mysqldump

  ${base_mysql_path}bin/mysqldump -u${mysql_user} -p${mysql_pass} -all-database > ${backup_name}.sql

  #pack

  tar zcf ${backup_name}.tar.gz ${backup_name}.sql

  rm -f ${backup_name}.sql

  #backup to mnt

  cp ${backup_name}.tar.gz ${mnt_back_path}${backup_name}.tar.gz

  #ftp to other host

  ftp -n<

  open ${ftp_host}

  user ${ftp_user} ${ftp_pass}

  bin

  prompt off

  cd ${ftp_back_path}

  passive

  put ${backup_name}.tar.gz

  close

  bye

  !

  2.添加定時計劃(vi /etc/crontab)

  01 0 * * * root /data/shell/backupmysqleveryday.sh

  每天0:01點執行

 

copyright © 萬盛學電腦網 all rights reserved