shell+crontab+mysql_Shell结合crontab实现MySQL的全量、增量备份

本篇文章主要讲如何使用shell实现mysql全量,增量备份。增量备份在周一-周六凌晨3点,会复制mysql-bin.00000*到指定目录;而全量备份则使用mysqldump将所有的数据库导出,每周日凌晨3点执,并会删除上周留下的mysq-bin.00000*。然后对mysql的备份操作会保留在bak.log文件中。如下图:

f3904563cf674d848f253c6d76a1bad9.png

实现:

1.编写全量备份脚本# vim /Server/Scripts/DBFullyBak.sh //添加以下内容#!/bin/bash

#use mysqldump to Fully backup mysql data per week!

#Author:xiaoxiao

#DATE:2020-02-08

#E-Mail:77368447@qq.com

#username 、password、dbname

username="root"

password="123456"

dbname="DB"

beginTime=`date +"%Y年%m月%d日 %H:%M:%S"`

#Backup Directory

bakDir=/data/mysql/backup

#Log File

logFile=/data/mysql/backup/bak.log

#Backup File

nowDate=`date +%Y%m%d`

dumpFile="${dbname}_${nowDate}.sql"

gzDumpFile="${dbname}_${nowDate}.sql.tgz"

cd $bakDir

# Full Backup

/usr/bin/mysqldump -u${username} -p${password} --quick --events --databases ${dbname} --flush-logs --delete-master-logs --single-transaction>$dumpFile

#tar

/bin/tar -zvcf $gzDumpFile $dumpFile

/bin/rm $dumpFile

endTime=`date +"%Y年%m月%d日 %H:%M:%S"`

echo 开始:$beginTime 结束:$endTime $gzDumpFile succ >> $logFile

#delete all full backup

cd $bakDir/daily

/bin/rm -f *

2.编写增量备份脚本

# vim  /Server/Scripts/DBDailyBak.sh //内容为下#!/bin/bash

#use cp to backup mysql data everyday!

#Author:xiaoxiao

#Date:2020-02-08

#E-mail:77368447@qq.com

#username password

username=root

password=123456

# 增量备份时复制mysql-bin.00000*的目标目录,提前手动创建这个目录

BakDir=/data/mysql/backup/daily

# 日志文件

LogFile=/data/mysql/backup/bak.log

# mysql的数据目录

BinDir=/var/lib/mysql

# mysql的index文件路径,放在数据目录下的

BinFile=/var/lib/mysql/mysql-bin.index

# 这个是用于产生新的mysql-bin.00000*文件

/usr/bin/mysqladmin -u${username} -p${password} flush-logs

Counter=`wc -l $BinFile | awk '{print $1}'`

NextNum=0

# 这个for循环用于比对$Counter,$NextNum这两个值来确定文件是不是存在或最新的

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

#test -e用于检测目标文件是否存在,存在就写exist!到$LogFile去

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

3.设置crontab任务,每天执行备份脚本

# crontab -l //内容为下代码内容:#每个星期日凌晨3:00执行完全备份脚本

0 3 * * 0 /Server/Scripts/DBFullyBak.sh >/dev/null 2>&1

#周一到周六凌晨3:00做增量备份

0 3 * * 1-6 /Server/Scripts/DBDailyBak.sh >/dev/null 2>&1

脚本附件:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值