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
  • 相关阅读:
    final/override控制
    高效遍历图像
    快速初始化成员变量
    C++ boost.python折腾笔记
    百亿数据毫秒响应级交易系统读写分离存储数据设计
    解决VS2010子目录中的.cpp文件引用上一级目录的stdafx.h找不到定义的问题
    生产应用常见坑
    spring AOP应用
    springmvc No mapping found for HTTP request with URI in Dispatc
    myeclipse使用maven插件进行maven install时报错check $m2_home environment variable and mvn script match
  • 原文地址:https://www.cnblogs.com/JeremyWYL/p/7525066.html
Copyright © 2011-2022 走看看