当前位置:论坛首页 > Linux面板 > Linux面板教程

MySQL增量备份脚本

发表在 Linux面板2020-3-10 20:34 [复制链接] 5 4720

在MySQL数据库使用过程中为了数据库的安全,我们会对此进行多次备份,来保证数据的完整性。
MySQL备份完整备份脚本:
  1. #!/bin/bash

  2. export LANG=en_US.UTF-8

  3. BackDir=/www/backup/databases

  4. LogFile=/www/backup/database/back.log

  5. Date=`date +%Y%m%d`

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

  7. cd $BackDir

  8. DumpFile=$Date.sql

  9. GZDumpFile=$Date.sql.tgz

  10. mysqldump -uroot -p<font color="#ff0000">数据库的root用户的密码</font> --all-databases --flush-logs --delete-master-logs --single-transaction > $DumpFile

  11. tar -czvf $GZDumpFile $DumpFile

  12. rm $DumpFile



  13. count=$(ls -l *.tgz |wc -l)

  14. if [ $count -ge 5 ]

  15. then

  16. file=$(ls -l *.tgz |awk '{print $9}'|awk 'NR==1')

  17. rm -f $file

  18. fi

  19. #保留1个月的备份文件



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

  21. echo 开始:$Begin 结束:$Last $GZDumpFile succ >> $LogFile

  22. cd $BackDir/daily

  23. rm -f *
复制代码
增量备份的脚本:
增量备份的优点(包含但不限于):
1、对磁盘的空间占用较少
2、备份时间较短
缺点:
1、需要开启二进制日志,倘若磁盘较少,会增加磁盘的开销
2、倘若日志文件有损坏,会出现备份数据不完整的现象
3、恢复起来比较麻烦
  1. #!/bin/bash

  2. export LANG=en_US.UTF-8

  3. BackDir=/www/backup/databases

  4. BinlogDir=/www/server/data

  5. LogFile=/www/backup/database/back.log

  6. BinFile=/www/server/data/mysql-bin.index

  7. mysqladmin -uroot -p数据库的root用户的密码 flush-logs

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

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

  10. NextNum=0

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

  12. for file in `cat $BinFile`

  13. do

  14.     base=`basename $file`

  15.     #basename用于截取mysql-bin.00000*文件名,去掉./mysql-bin.000005前面的./

  16.     NextNum=`expr $NextNum + 1`

  17.     if [ $NextNum -eq $Counter ]

  18.     then

  19.         echo $base skip! >> $LogFile

  20.     else

  21.         dest=$BackDir/$base

  22.         if(test -e $dest)

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

  24.         then

  25.             echo $base exist! >> $LogFile

  26.         else

  27.             cp $BinlogDir/$base $BackDir

  28.             echo $base copying >> $LogFile

  29.         fi

  30.     fi

  31. done

  32. echo `date +"%Y年%m月%d日 %H:%M:%S"` Bakup succ! >> $LogFile
复制代码


使用道具 举报 只看该作者 回复
发表于 2020-3-10 20:34:45 | 显示全部楼层
看自己的需求进行数据库备份。
使用道具 举报 回复 支持 反对
发表于 2020-3-10 20:59:47 | 显示全部楼层
学习下。
使用道具 举报 回复
发表于 2020-3-10 22:04:49 | 显示全部楼层
收藏
使用道具 举报 回复
发表于 2020-3-11 09:48:48 | 显示全部楼层
多谢炮哥分享,收藏以备不时之需
使用道具 举报 回复 支持 反对
发表于 2020-3-11 12:30:32 | 显示全部楼层
我是每天整站备份的!
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术免费分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表