设为首页 收藏本站
查看: 1550|回复: 6

shell进行完整和增量备份mysql数据库

[复制链接]

尚未签到

发表于 2013-3-26 09:16:04 | 显示全部楼层 |阅读模式

文档介绍

本文档采用mysqldump 对数据库进行备份,mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法,mysqldump 比直接拷贝要慢些。
本文描述Mysql数据库的自动备份,包括完全备份和增量备份。其中,完全备份每周执行一次,增量备份每天都会执行。备份成功后会自动上传到FTP服务器。mysql需要开启二进制日志。

备份策略布置
把脚本放到/usr/bin 目录下面
1)、启用二进制日志
采用 binlog 的方法相对来说更灵活,省心省力,而且还可以支持增量备份。
启用 binlog 时必须要重启 mysqld。首先,关闭 mysqld,打开 /etc/my.cnf,加入以下几行:
[mysqld]
log-bin
然后启动 mysqld 就可以了。运行过程中会产生 HOSTNAME-bin.000001 以及 HOSTNAME-bin.index,前面的文件是 mysqld 记录所有对数据的更新操作,后面的文件则是所有 binlog 的索引,都不能轻易删除。关于binlog 的更详细信息请查看手册。
2)、设置crontab任务,每天执行备份脚本
shell> vi /etc/crontab
添加以下:

0 00 * * * root /usr/bin/backap_mysql.sh

脚本如下:

  • [Shell] 纯文本查看 复制代码
    #!/bin/bash  
    #set -x  
    #此脚本的主要用途是备份mysql服务器上的数据库。并且自动通过FTP上传到服务器。备份完后都会发送一封邮件。  
    echo -e "此脚本的主要用途是备份mysql服务器上的数据库.并且自动通过FTP上传到服务器。"  
    Host=www.chlinux.net  
    pass=chenqibin  
    name=root  
    DATE=`date +"%Y%m%d"`  
    WAN_DIR="/wan_dir"  
    ZENG_BACK="/backup"  
    DATA_DIR="/usr/local/mysql/data"  
    MYSQL_BIN="/usr/local/mysql/bin"  
    error_log="$WAN_DIR/backup_error_$DATE.log"  
    backup_log="$ZENG_DIR/backup_$DATE.log"  
    gzdumpfile="$DATE.sql.tar.gz"  
    db="/var/log/backup_$DATE.txt"  
      
    cd $DATA_DIR  
      
    ls -l $DATA_DIR | grep "^d" | awk -F " " '{print $9}' >>$db  
      
    function wan() {  
    #检测完全备份目录是否存在,如果不存在就创建。  
    if [ -d $WAN_DIR ]  
    then  
        echo "完全备份目录存在" >>$backup_log  
    else  
        echo "完全备份目录不存在,开始创建......."  
        /bin/mkdir $WAN_DIR  
    fi  
      
    eMailFile="$WAN_DIR/mail.log"  
    email=kelly@r2games.net  
        echo "       " > $eMailFile  
        echo "-----------------------" >> $eMailFile  
        echo "`date +"%y-%m-%d %H:%M:%S"`" >> $eMailFile  
        echo "-------------------------" >> $eMailFile  
    cd $WAN_DIR  
        for dbname in $(cat $db)  
        do  
           mysqldump --flush-logs -u$name -p$pass --skip-lock-tables --quick $dbname > $dbname.sql  
            if [ $? = 0 ]  
            then  
                 find $ZENG_BACK -name "*.log" -mtime +32 -exec rm {} \; >/dev/null 2>&1  
                 cd $WAN_DIR   
                 tar -zcvf $dbname.$gzdumpfile $dbname.sql  
                 echo "Backup MySQL succeed" >>$eMailFile  
                 mail -s "MySQL Backup" $email < $eMailFile  
            else  
                 echo "Backup MySQL fail" >>$eMailFile  
                 mail -s "MySQL Backup fail" $email < $eMailFile  
            fi  
        done  
    #完全备份后删除本地增量备份文件,只保留最近一个星期的增量备份文件  
    find $ZENG_BACK -name "*.sql.tar.gz"  --mtime +7 -exec rm -rf {} \; >>$backup_log   
      
    #将备份好的上传到FTP服务器  
    cd $WAN_DIR  
    for db_back in $(cat $db)  
    do  
        ftp -nv $Host <<EOF  
        user wolf "wolf#123"  
        put $db_back.$gzdumpfile  
        quit  
    EOF  
    done  
    }  
    function zeng() {  
    /bin/mkdir /zeng_dir  
      
    eMailFile="$ZENG_DIR/mail.log"  
    email=kelly@r2games.net  
      
    echo "       " > $eMailFile  
    echo "-----------------------" >> $eMailFile  
    echo "`date +"%y-%m-%d %H:%M:%S"`" >> $eMailFile  
    echo "-------------------------" >> $eMailFile  
      
    TIME=$(date "-d 10 day ago" +%Y-%m-%d %H:%M:%S)   
    StartTime=$(date "-d 1 day ago" +"%Y-%m-%d %H:%M:%S")  
    Start="--start-datetime"  
    #删除10天前的二进制文件  
    mysql -u$name -p$pass -e "purge master logs before ${TIME}" && echo "delete 10 days before log" | tee -a $eMailFile  
    filename=`cat $DATA_DIR/chlinux-bin.index | awk -F "/" '{print $2}'`  
    cd /zeng_dir  
      
    for i in $filename  
    do  
         echo "$StartTime start backup binlog" >> $eMailFile  
      
         for db_name in $(cat $db)  
         do  
               mysqlbinlog -u$name -pchenqibin -d $db_name $Start="$StartTime" $DATA_DIR/$i >>$db_name.$DATE.sql  
            if [ $? = 0 ]  
            then  
                 cd /zeng_dir  
                 tar -zcvf $db_name.$gzdumpfile $db_name.$DATE.sql  
                 echo "Backup MySQL succeed" >>$eMailFile  
                 mail -s "MySQL Backup" $email < $eMailFile  
            else  
                 echo "Backup MySQL fail" >>$eMailFile  
                 mail -s "MySQL Backup fail" $email < $eMailFile  
            fi  
         done  
    done  
    find $ZENG_BACK -name "*.log" -name +32 -exec rm {} \; >/dev/null 2>&1  
    cd /zeng_dir  
    #删除上次备份的完整备份的文件  
    find $WAN_DIR -name "*.tar.gz"  --mtime +7 -exec rm -rf {} \;  
      
    #将备份好的上传到FTP服务器  
    for db_back in $(cat $db)  
    do  
        ftp -nv $Host <<EOF  
        user wolf "wolf#123"  
        put $db_back.$gzdumpfile  
        quit  
    EOF  
    done  
    }  
    backfile=`ls -l /wan_dir | wc -l`  
    if [ $backfile != 0 ]  
    then  
        echo "完整备份已经存在,现在进行增量备份"  
        sleep 10  
        zeng  
    else  
        echo "还没进行完整备份,现在进行完整备份"  
        sleep 30  
        wan  
    fi  
    
    主要变量说明:
    
    Host     #FTP的IP
    
    pass     #FTP的密码
    
    name     #FTP和mysql的用户名
    
    DATE     #时间
    
    WAN_DIR  #完整备份的目录
    
    ZENG_BACK  #增量备份的目录
    
    DATA_DIR   #mysql数据目录
    
    error_log  #错误日志
    
    gzdumpfile #压缩后的后缀名
    
    db          #mysql数据库名



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-4371-1-1.html 上篇帖子: shell 脚本实现统计文件夹下目录及文件个数 下篇帖子: Shell 脚本自动Telnet 并执行远端机器的脚本 数据库 mysql

尚未签到

发表于 2013-3-26 09:23:19 | 显示全部楼层
写的真的很不错

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-17 17:07:02 | 显示全部楼层
只要不下流,我们就是主流!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-21 06:44:28 | 显示全部楼层
我的id是假冒的,大家不要相信我是骗子。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-25 13:34:14 | 显示全部楼层
谢谢楼主,共同发展

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

发表于 2013-6-1 00:29:53 | 显示全部楼层
恋爱就是无数个饭局,结婚就是一个饭局。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-6-5 22:06:05 | 显示全部楼层
只有假货是真的,别的都是假的!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表