shell实现mysql mysqldump实现数据全备份或增量备份

小浪SEO博客 专注SEO优化思维、SEO技术的实战分享类博客~

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

开始:2013年05月02日 15:10:57 结束:2013年05月02日 15:12:16 20130502.sql.tgz succ是由DBFullyBak.sh产生的,每周备份一次;mysql-bin.000001 copying;mysql-bin.000002 skip!;2013年05月02日 16:53:15 Bakup succ!则是由DBDailyBak.sh产生的,每天一次。

实现:1.编写全量备份脚本,代码如下:

  1. #vim/root/DBFullyBak.sh//添加以下内容
  2. #!/bin/bash
  3. #Program
  4. #usemysqldumptoFullybackupmysqldataperweek!
  5. #History
  6. #2013-04-27guofirst
  7. #Path
  8. #....
  9. BakDir=/home/mysql/backup
  10. LogFile=/home/mysql/backup/bak.log
  11. Date=`date+%Y%m%d`
  12. Begin=`date+"%Y年%m月%d日%H:%M:%S"`
  13. cd$BakDir
  14. DumpFile=$Date.sql
  15. GZDumpFile=$Date.sql.tgz
  16. /usr/local/mysql/bin/mysqldump-uroot-p123456--quick--all-databases--flush-logs--delete-master-logs--single-transaction>$DumpFile
  17. /bin/tarczvf$GZDumpFile$DumpFile
  18. /bin/rm$DumpFile
  19. Last=`date+"%Y年%m月%d日%H:%M:%S"`
  20. echo开始:$Begin结束:$Last$GZDumpFilesucc>>$LogFile
  21. cd$BakDir/daily
  22. rm-f*

2.编写增量备份脚本,代码如下:

  1. #cat/root/DBDailyBak.sh//内容为下
  2. #!/bin/bash
  3. #Program
  4. #usecptobackupmysqldataeveryday!
  5. #History
  6. #2013-05-02guofirst
  7. #Path
  8. #....
  9. BakDir=/home/mysql/backup/daily
  10. BinDir=/home/mysql/data
  11. LogFile=/home/mysql/backup/bak.log
  12. BinFile=/home/mysql/data/mysql-bin.index
  13. /usr/local/mysql/bin/mysqladmin-uroot-p123456flush-logs
  14. #这个是用于产生新的mysql-bin.00000*文件
  15. Counter=`wc-l$BinFile|awk'{print$1}'`
  16. NextNum=0
  17. #这个for循环用于比对$Counter,$NextNum这两个值来确定文件是不是存在或最新的。
  18. forfilein`cat$BinFile`
  19. do
  20. base=`basename$file`
  21. #basename用于截取mysql-bin.00000*文件名,去掉./mysql-bin.000005前面的./
  22. NextNum=`expr$NextNum+1`
  23. if[$NextNum-eq$Counter]
  24. then
  25. echo$baseskip!>>$LogFile
  26. else
  27. dest=$BakDir/$base
  28. if(test-e$dest)
  29. #test-e用于检测目标文件是否存在,存在就写exist!到$LogFile去。
  30. then
  31. echo$baseexist!>>$LogFile
  32. else
  33. cp$BinDir/$base$BakDir
  34. echo$basecopying>>$LogFile
  35. fi
  36. fi
  37. done
  38. echo`date+"%Y年%m月%d日%H:%M:%S"`$NextBakupsucc!>>$LogFile

3.设置crontab任务,每天执行备份脚本,代码如下:

  1. #crontab-l//内容为下
  2. #每个星期日凌晨3:00执行完全备份脚本
  3. 03**0/root/DBFullyBak.sh>/dev/null2>&1
  4. #周一到周六凌晨3:00做增量备份
  5. 03**1-6/root/DBDailyBak.sh>/dev/null2>&1
  6. //phpfensi.com

附录:sh -n /root/DBFullyBak.sh可以用于检测shell语法是否正确.

相关广告
  • shell实现mysql mysqldump实现数据全备份或增量备份 shell实现mysql mysqldump实现数据全备份或增量备份 shell实现mysql mysqldump实现数据全备份或增量备份
相关阅读

shell实现mysql mysqldump实现数据全备份或增量备份

2019/10/10 17:36:24 | 谷歌SEO算法 | SEO知识