MySQL数据库全库备份及增量备份脚本

  

脚本网盘链接下载。

  

1,全库备份脚本如下:

  
 <代码> # !/bin/bash
  # # # # # # # # # # # # # # #定义默认值# # # # # # # # # # # # # # # # #
  用户=案?
  passwd=' 123. com '
  主机=' localhost '
  今天=叭掌凇? % F ' '
  dump_cmd=/usr/当地/mysql/bin/, mysqldump '
  full_backupdir="/opt/数据库/full_backup/?
  电子邮件=' 916551516 @qq.com '
  # # # # # # # # # # # # # # # # # # #加载变量并定义脚本用法# # # # # # # # # # # # # # # # # # #
  
  使用(){
  echo - e”033年\[33米
  0美元脚本用法:
  - u:指定备份用户(默认是根)
  p:指定用户密码(默认密码为“123. com”)
  - h:指定备份主机(默认是本机)
  - d:指定要备份的数据库(默认备份所有库)
  033年\ [0 m”
  }
  
  如果[[1美元==薄镏鷟 | 1美元==' - h ']);
  使用
  退出0
  fi
  
  # # # # # # # # # # # # # # # # # # # # # #对选项进行赋值# # # # # # # # # # # # # # # # # # #
  而getopt”: u: p h: d:“optname;做
  “optname美元”
  “u”)
  用户=$ OPTARG
  ;;
  “p”)
  passwd=$ OPTARG
  ;;
  “h”)
  主机=$ OPTARG
  ;;
  “d”)
  db=$ OPTARG
  ;;
  “:”)
  回声”此选项没有值!”
  ;;
  “*”)
  回声”错误信息……”
  ;;
  “?”)
  回声”不知道此选项……”
  ;;
  esac
  完成
  
  # # # # # # # # # # # # #对要备份的库进行判断并执行备份操作# # # # # # # # # # # # # # #
  [- d $ {full_backupdir}] | | mkdir - p $ {full_backupdir}
  cd $ {full_backupdir}
  :比;err.log
  如果($ {# db} eq 0);
  $ {dump_cmd} - u $ {user} - p $ {passwd} - h ${主机}- a - f比;今天的$ {}。sql 2比;err.log
  状态=$ ?
  今天sqlname=" $ {} . sql”
  其他的
  $ {dump_cmd} - u $ {user} - p $ {passwd} - h ${主机}——数据库db - f比美元;今天的$ {}。$ {db}。sql 2比;err.log
  状态=$ ?
  今天sqlname=" $ {} $ {db} . sql”。
  fi
  
  # # # # # # # # # # # #对备份状态进行判断# # # # # # # # # # # # # # # # # # # # #
  如果(${地位}eq 0);
  焦油zcf $ {sqlname} . tar。广州。/$ {sqlname}
  rm - f $ {sqlname}
  # # # # # # # # # # #如果失败,则发送报警邮件到指定邮箱# # # # # # # # # # # # # # # #
  其他的
  回声“备份数据库失败,错误日志如上所示! ! !“在祝辞err.log
  邮件- s“mysql备份”美元邮件& lt;err.log
  fi
  
  # # # # # # # # # # # #删除二十天前的备份文件# # # # # # # # # # # # # #
  找到。型f - name " * . tar。广州“-mtime + 20删除 
  

2,二进制增量备份脚本

  
 <代码> # !/bin/bash
  # # # # # # # # # # # # # # # # # # # # # # #定义初始值# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
  用户=案?
  passwd=' 123. com '
  datadir="/usr/地方/mysql/数据”
  backupdir="/opt/数据库/dailybackup/?
  dump_cmd=/usr/当地/mysql/bin/mysqlbinlog '
  
  [- d $ {backupdir}] | | mkdir - p $ {backupdir} #判断备份文件存放路径是否存在
  cd $ {datadir} #切换至mysql的数据存放路径='猫bin_log求和。指数| wc - l ' #取得所有二进制日志文件总数/usr/local/mysql/bin/mysql - u $ {user} - p $ {passwd} - e“刷新日志”,在/dev/null #在备份前刷新二进制日志文件
  
  nextnum=0 #定义一个初始值为0
  backupsum=0
  在“猫bin_log文件。指数”#对所有二进制日志文件进行遍历
  做
  binlogname=' basename美元文件' #获取二进制日志文件名
  #如果当前备份的文件数目比总数小(新刷新的二进制文件不需要备份)
  如果[$ nextnum lt和美元);
  [- f $ {backupdir} $ {binlogname}] | | cp - $ {file} $ {backupdir} $ {binlogname} #如果备份目录下不存在该二进制文件,则进行复制动作
  让nextnum + + #对备份成功数量进行增加
  fi
  完成
  回声“跳过最新二进制日志文件,备份完成! ! !” 

MySQL数据库全库备份及增量备份脚本