zoukankan      html  css  js  c++  java
  • MYSQL数据库增量备份

    MySQL数据库增量备份,在这之前修改我们的数据库配置文件/etc/my.cnf开启bin-log日志功能即可。接下来是我参考了下网上的一些方法,自己写的,主要还是要能学到他的一些思路和方法。

    #function:MYSQL增量备份
    #version:1.0.0
    #author:wangyanlin
    #date:2017/08/02
    #-----------------------------------------------------------------------------------------------
    #!/bin/sh
    export LANG=en_US.UTF-8
    #设置时间
    DATE=`date +%Y%m%d`
    #设置信息
    USER=root
    PASSWORD=withub
    #设置路径
    cd /
    /usr/bin/mkdir -p mysql_bak/daily 
    /usr/bin/mkdir -p mysql_bak/logs
    BakDir=/mysql_bak/daily
    BinDir=/var/lib/mysql
    LogFile=/mysql_bak/logs/Daily_$DATE.log
    BinlogFile=/var/lib/mysql/mysql-bin.index
    /usr/bin/mysqladmin -u$USER -p$PASSWORD flush-logs #刷新日志
    Counter=`wc -l $BinlogFile | awk '{print $1}'`
    NextNum=0
    start_time=`date +'%Y-%m-%d %H:%M:%S'`
    echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next1 Bakup start! >> $LogFile
    #这个for循环用于比对$Counter,$NextNum这两个值来确定文件是不是存在或最新的。
    for file in  `cat $BinlogFile`
    do
            base=`basename $file`
            #basename用于截取mysql-bin.00000*文件名,去掉./mysql-bin.000005前面的./
            NextNum=`expr $NextNum + 1`
            if [ $NextNum -eq $Counter ]
            then
                    echo $base skip!  >> $LogFile
            else
                    dest=$BakDir/$base
                    if(test -e $dest)
                    #test -e用于检测目标文件是否存在,存在就写exist!到$LogFile去。
                    then
                            echo  $base exist! >> $LogFile
                    else
                            cp $BinDir/$base $BakDir
                            echo $base copying >> $LogFile
                    fi
            fi
    done
    echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next2 Bakup succ! >> $LogFile
    end_time=`date +'%Y-%m-%d %H:%M:%S'`
    start_seconds=$(date --date="$start_time" +%s);
    end_seconds=$(date --date="$end_time" +%s);
    echo "本次备份运行时间: "$((end_seconds-start_seconds))"s" >> $LogFile

    添加计划任务:

                           crontab -e

                           00 03 * * * /root/MySQL_incrementbak.sh    #每天的凌晨3点开始增量备份日

    logs日志打印出来的效果:

                          

    有问题请留言,我们互相交流!

    Just Do It
  • 相关阅读:
    对线程的理解
    C#-设计模式-策略模式
    C#-设计模式-观察者模式
    C#-设计模式-模板方法
    C#-设计模式-适配器模式
    C#-设计模式-代理模式
    C#-设计模式-装饰模式
    C#-设计模式-简单工厂
    C#-设计模式-单例模式
    DotNet Core2.1 编写自己的中间件和后台服务
  • 原文地址:https://www.cnblogs.com/JeremyWYL/p/7525066.html
Copyright © 2011-2022 走看看