• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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日志打印出来的效果:

    PS:下面看下mysql全量和增量备份脚本

    全量:

    [root@master leo]# cat DBfullBak.sh 
    #!/bin/bash
    #use mysqldump to fully backup mysql data
    BakDir=/root/leo/full
    LogFile=/root/leo/full/bak.log
    Date=`date +%Y%m%d`
    Begin=`date +"%Y年%m月%d日 %H:%M:%S"`
    cd $BakDir
    DumpFile=$Date.sql
    GZDumpFile=$Date.sql.tgz
    mysqldump -uroot -p123456 --all-databases --lock-all-tables --routines --triggers --events --master-data=2 --flush-logs > $DumpFile
    tar zcvf $GZDumpFile $DumpFile
    rm $DumpFile
    Last=`date +"%Y年%m月%d日 %H:%M:%S"`
    echo 开始:$Begin 结束:$Last $GZDumpFile succ >> $LogFile

    参数注释:

    --all-databases #备份所有库
    --lock-all-tables #为所有表加读锁
    --routinge  #存储过程与函数
    --triggers  #触发器
    --events   #记录事件
    --master-data=2 #在备份文件中记录当前二进制日志的位置,并且为注释的,1是不注释掉在主从复制中才有意义
    --flush-logs  #日志滚动一次

    结果如下:

    [root@master full]# ls
    20140728.sql.tgz bak.log
    [root@master full]# cat bak.log 
    开始:2014年07月28日 19:02:59 结束:2014年07月28日 19:02:59 20140728.sql.tgz succ
    开始:2014年07月28日 19:12:01 结束:2014年07月28日 19:12:01 20140728.sql.tgz succ
    [root@master full]#

    增量备份:

    [root@master leo]# cat DBDailyBak.sh 
    #!/bin/bash
    BakDir=/root/leo/binlog/
    BinDir=/var/lib/mysql
    LogFile=/root/leo/binlog/bak.log
    BinFile=/var/lib/mysql/mysql-bin.index
    mysqladmin -uroot -p123456 flush-logs
    Counter=`wc -l $BinFile|awk '{print $1}'`
    NextNum=0
    for file in `cat $BinFile`
    do 
     base=`basename $file`
     NextNum=`expr $NextNum + 1`
     if [ $NextNum -eq $Counter ]
     then
      echo $base skip! >> $LogFile
     else
      dest=$BakDir/$base
      if(test -e $dest)
      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"` $Next Bakup succ~ >> $LogFile

    总结

    以上所述是小编给大家介绍的Mysql数据库增量备份的思路和方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    您可能感兴趣的文章:
    • MySQL数据库定时备份的实现方法
    • mysql数据库太大了如何备份与还原
    • 8种手动和自动备份MySQL数据库的方法
    • ThinkPHP框架实现的MySQL数据库备份功能示例
    • Navicat for MySQL定时备份数据库及数据恢复详解
    • linux实现mysql数据库每天自动备份定时备份
    • MySQL数据库的shell脚本自动备份
    • MySQL数据库如何导入导出(备份还原)
    • Mysql备份多个数据库代码实例
    上一篇:windows环境下mysql的解压安装及备份和还原
    下一篇:MySQL慢查询日志的配置与使用教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Mysql数据库增量备份的思路和方法 Mysql,数据库,增量,备份,