mysql 第三十五篇文章~xtarbackup增量备份以及策略

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 第三十五篇文章~xtarbackup增量备份以及策略相关的知识,希望对你有一定的参考价值。

一 简介: 今天咱们来探讨下增量备份的策略

二 背景: 随着数据量的日益增长,全备已经不现实了,所以探讨并测试了增量备份策略

三 具体策略: 1  一周为界限,一天做全备,其他时间以全备为基础进行增量备份

                     2  一周为界限,进行打包,然后上传到备份服务器

四 具体脚本: 

               第一部分 参数变量初始化

                   #!/bin/bash

                   #config

                  xingqi=`date +%w`

                  DATE=`date +%Y%m%d%H`

                  DATEyst=`date +"%Y%m%d%H" -d "-24hour"`
                  DISKSIZE=`df -h|grep ‘9[0-9]%‘`
                  dirname="/backup/database"
                  IP=`/sbin/ifconfig eth0 | grep ‘inet addr‘ | cut -d: -f2 | awk ‘{ print $1}‘|cut -d‘.‘ -f 3,4`
                  user="aaa"
                  password="ccc"
                  pwd=$dirname

             第二部分   全备 

                   function fullbackup() {

                    if [ -z "$DISKSIZE" ];then

                    mkdir -p $pwd
                    filename1=$DATE"_full_"$IP
                   innobackupex --defaults-file=/etc/my.cnf --user=$user --password=$password --no-timestamp --socket=/tmp/mysql.sock --slave-info $pwd/$filename1 > /dev/null
                   sleep 2
                   else
                   echo " the disk is full "
                   fi

            第三部分   第一次增量备份

                  function incrementalbackup(){

                  filename1=$DATEyst"_full_"$IP
                  filename2=$DATE"_incremental_"$IP

                  if [ -z "$DISKSIZE" ];then
                  innobackupex --defaults-file=/etc/my.cnf --user=$user --password=$password --no-timestamp --socket=/tmp/mysql.sock --slave-info --incremental-basedir=$pwd/$filename1 --incremental $pwd/$filename2 > /dev/null
                  sleep 2
                  else

                  echo "the disk is full  "

                   fi

                   }  

             第四部分 第二次增量备份          

             function incrementalbackup_1(){

             filename1=$DATEyst"_incremental_"$IP
             filename2=$DATE"_incremental_"$IP
             if [ -z "$DISKSIZE" ];then
             innobackupex --defaults-file=/etc/my.cnf --user=$user --password=$password --no-timestamp --socket=/tmp/mysql.sock --slave-info --incremental-basedir=$pwd/$filename1 --incremental $pwd/$filename2 > /dev/null
             sleep 2
             else

             echo "the disk is full "

              fi

            第五部分  统一打包

              

           function tarbackup(){
          cd /backup/database
          tar -czf $DATEyst.tar.gz fullfile_xtra/
          rm -rf database/
           }

        第六 部分  调用

         if [ $xingqi = 2 ];then

        tarbackup

       fullbackup

       elif [ $xingqi = 3 ];then
       incrementalbackup
       echo "incrementalbackup 1"
       elif [ $xingqi =1 ];then
       incrementalbackup_1

       else
       incrementalbackup_1
       echo "incrementalbackup n"
       fi

五 增量恢复步骤 

       1  先恢复 全量备份 

        innobackupex --apply-log --redo-only BASE-DIR

      2  恢复增量备份 1

        innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1

     3 恢复增量备份 2

        innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2

 六 注意点:

     备份:

           1 备份脚本没有生成时间戳目录,因为有时间戳目录会增大脚本编写难度

           2 备份脚本修改一些参数即可使用,是根据星期进行判断执行增量还是全量备份,全量备份前会把上一次的备份全套打包

     还原 

           1 全量恢复+增量恢复 可以灵活进行配合 ,全量恢复是基础 切记

           2  选取目标的增量恢复 不能加read-only

 七  差不多就这样了,有问题留言

 

  

 

 

 

             

 

 

 

 

 

 

           



































以上是关于mysql 第三十五篇文章~xtarbackup增量备份以及策略的主要内容,如果未能解决你的问题,请参考以下文章

林晓斌MySQL实战第三十五讲- join语句怎么优化?

第三十五 MYSQL 语句

“全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?

2018-08-22 第三十五课

第三十五节-新增标签

全国计算机等级考试二级Python(2021年9月)备考笔记 第十二天