百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> linux下mysql数据备份与自动备份实例
分享文章到:

linux下mysql数据备份与自动备份实例

发布时间:01/15 来源: 浏览: 关键词:

脚本放在 /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点执行

 

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有4人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板