Mysql 物理备份计划场景模拟

Mysql 物理备份脚本

工具:xtrabackup 2.4.29
需求1:每周为一个循环,周一全量,周二增量,周三增量,周四差异,周五增量,周六增量,周天差异
需求2:完全后台执行
需求3:备份完整
需求4:日志记录
需求5:历史数据的处理

        innobackupexxtrabackup的封装,是percona推出的可靠物理备份工具,对于mysql,逻辑备份可以使用mysqldump、mysqlpump、mysqldumper,物理备份可以直接使用innobackupex

我这里直接使用yum安装的innobackupex工具

Percona Repo感兴趣可以也到官网选择对应版本下载,直接解压就能使用

# yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
# yum install percona-xtrabackup-24  
# yum install qpress  ##innobackupex支持压缩导出,这里安装压缩工具
 
# innobackupex -version   #查看版本信息

如果出现如下提示表示安装成功,我这里是2.4.29

ok有了工具我们开始 创建shell脚本

vim  /backup.sh

编写内容

#!/bin/bash
User="用户"
Passwd="数据库登录密码"
backdir="/backup"
logPath="/var/log/backup.log"
#定义数组0为全量备份1为增量备份2为差异备份
day=(2 0 1 1 2 1 1)
#    0 1 2 3 4 5 6 
daytime=`date +%w`
#full全量,incr增量,diff差异
full(){
#移动之前的日志
        mv $logPath $backdir
#压缩之前的备份
        tar cf /tmp/mysql_back_`date +%F`.tar.gz "$backdir" && \
        rm -rf $backdir
#创建备份目录结构
        mkdir -p $backdir/{full,incr,diff}
#执行完整备份
        innobackupex --user=$User --password=$Passwd $backdir/full
#记录备份日志
        echo "full `ls $backdir/full |tail -n 1`" >> $logPath
}
other(){
#$1incr|diff 备份的类型
#$2需要基于的完整路径
        innobackupex --user=$User --password=$Passwd --incremental $backdir/$1 --incremental-basedir=$2
#记录备份日志
        echo "$3 `ls $backdir/$3 |tail -n 1`" >> $logPath
}
case ${day[$daytime]} in
0)
        full
        ;;
1)
#获取上一次备份的类型
        type=$(tail -n 1 $logPath|awk '{print $1}')
#获取上一次备份的目录
        time=$(tail -n 1 $logPath|awk '{print $2}')
#执行增量备份
        other incr $backdir/$type/$time incr
        ;;
2)
#获取上一次完整备份的目录
        time=$(grep full $logPath|awk '{print $2}')
#执行差异备份
        other diff $backdir/full/$time diff
    ;;
esac

总结

执行脚本需要有第一次的全量备份做基础不然就会报错

比如从周一开始执行就不会有问题,或者修改数组先跑一遍周一的,或者手动全量备份到全量目录一次

希望能够帮助到大家!!

相关推荐

  1. MySQL物理备份

    2024-03-11 12:22:02       31 阅读
  2. MySQL物理备份-XtraBackup远程备份恢复

    2024-03-11 12:22:02       23 阅读
  3. MySQL8.0物理备份恢复核心流程

    2024-03-11 12:22:02       42 阅读
  4. mysql备份

    2024-03-11 12:22:02       47 阅读
  5. mysql备份

    2024-03-11 12:22:02       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 12:22:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 12:22:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 12:22:02       82 阅读
  4. Python语言-面向对象

    2024-03-11 12:22:02       91 阅读

热门阅读

  1. egg.js学习记录

    2024-03-11 12:22:02       45 阅读
  2. ChatGPT unable to load conversion原因和解决的方法

    2024-03-11 12:22:02       94 阅读
  3. 数据结构-栈-表达式运算

    2024-03-11 12:22:02       43 阅读
  4. 谈谈Pytorch中的dataset

    2024-03-11 12:22:02       47 阅读
  5. 流量池增长(3)

    2024-03-11 12:22:02       42 阅读
  6. 在github上配置使用CI

    2024-03-11 12:22:02       53 阅读
  7. 计算机网络概述(接入网和物理媒体)

    2024-03-11 12:22:02       41 阅读
  8. Oracle Linux 8.9 安装 Python 3.11.8 和 Miniconda

    2024-03-11 12:22:02       43 阅读
  9. ocr关键信心提取数据集

    2024-03-11 12:22:02       45 阅读
  10. Python实战:Python常用IDE选择

    2024-03-11 12:22:02       53 阅读
  11. FFmpeg对H246进行编解码的实现

    2024-03-11 12:22:02       44 阅读