设为首页 收藏本站
查看: 542|回复: 0

Mysql完成备份+增量备份shell

[复制链接]

尚未签到

发表于 2018-8-25 06:01:06 | 显示全部楼层 |阅读模式
  --dump完全备份
  vi /tmp/mysql_full_bak.sh
  #!/bin/sh
  scriptsDir='pwd'
  mysqlDir='/usr/local/mysql'
  user=root
  userPWD=root123
  dataBackupDir=/tmp/mysqlbackup
  eMailFile=$dataBackupDir/email.txt
  eMail=chenhaibo@myhexin.com
  logFile=$dataBackupDir/mysqlbackup.log
  #DATE='date -I'
  DATE=`date -I`
  echo "" > $eMailFile
  echo $(date +"%y-%m-%d %H:%M:%S") >> $eMailFile
  cd $dataBackupDir
  dumpFile=mysql_$DATE.sql
  GZDumpFile=mysql_$DATE.sql.tar.gz
  #bakup
  $mysqlDir/bin/mysqldump -u$user -p$userPWD \
  --opt --default-character-set=utf8 --extended-insert=false \
  --triggers -R --hex-blob --all-databases \
  --flush-logs --delete-master-logs \
  -x  > $dumpFile
  #tar
  if [[ $? == 0 ]]; then
  tar czf $GZDumpFile $dumpFile >> eMailFile 2>&1
  echo "BackupFileName:$GZDumpFile" >> $eMailFile
  echo "DataBase Backup Success!" >> $eMailFile
  rm -rf $dumpFile
  #delete previous daily backup files
  cd $dataBackupDir/daily
  rm -f *
  # Delete old backup files(mtime>2).
  #$scriptsDir/rmBackup.sh
  #Move Backup Files To Backup Server.
  #适合Linux(MySQL服务器)到Linux(备份服务器)
  #$scriptsDir/rsyncBackup.sh
  #if (( !$? )); then
  #echo "Move Backup Files To Backup Server Success!" >> $eMailFile
  # else
  # echo "Move Backup Files To Backup Server Fail!" >> $eMailFile
  # fi
  #else
  #echo "DataBase Backup Fail!" >> $emailFile
  fi
  #write log
  echo "--------------------------------------------------------" >> $logFile
  cat $eMailFile >> $logFile
  #send imail
  cat $eMailFile | mail -s "MySQL Backup" $eMail
  增量备份
  vi /tmp/mysql_daily_bak.sh
  #!/bin/sh
  scriptsDir='pwd'
  mysqlDir='/usr/local/mysql'
  dataDir=$mysqlDir/var
  user=root
  userPWD=root123
  dataBackupDir=/tmp/mysqlbackup
  dailyBackupDir=$dataBackupDir/daily
  eMailFile=$dataBackupDir/email.txt
  eMail=chenhaibo@myhexin.com
  logFile=$dataBackupDir/mysqlbackup.log
  DATE=`date -I`
  HOSTNAME=`uname -n`
  echo "" > $eMailFile
  echo $(date +"%y-%m-%d %H:%M:%S") >> $eMailFile
  #刷新日志
  $mysqlDir/bin/mysqladmin -u$user -p$userPWD flush-logs
  cd $dataDir
  filelist=`cat mysql-bin.index`
  iCounter=0
  for file in $filelist
  do
  iCounter=`expr $iCounter + 1`
  done
  nextNum=0
  iFile=0
  for file in  $filelist
  do
  binLogName=`basename $file`
  nextNum=`expr $nextNum + 1`
  if [[ $nextNum == $iCounter ]]; then
  echo "skip lastest!" > /dev/null
  else
  dest=$dailyBackupDir/$binLogName
  #跳过已备份的二进制日志文件
  if [[ -e $dest ]]; then
  echo "Skip exist $binLogName!" > /dev/null
  else
  # 备份日志文件到备份目录
  cp $binLogName $dailyBackupDir
  if [[ $? == 0 ]]; then
  iFile=`expr $iFile + 1`
  echo "$binLogName Backup Success!" >> $eMailFile
  fi
  fi
  fi
  done
  if [[ $iFile == 0 ]];then
  echo "No Binlog Backup!" >> $eMailFile
  else
  echo "Backup $iFile File(s)." >> $eMailFile
  echo "Backup MySQL Binlog OK!" >> $eMailFile
  fi
  删除old文件
  vi /tmp/rmBackup.sh
  #!/bin/sh
  # Name:rmBackup.sh
  # PS:Delete old Backup.
  # 定义备份目录
  dataBackupDir=/tmp/mysqlbackup
  # 删除mtime>2的日志备份文件
  find $dataBackupDir -name "mysql_*.gz" -type f -mtime +2 -exec rm {} \; > /dev/null 2>&1
  同步备份到备份服务器
  vi /tmp/rsyncBackup.sh
  #!/bin/sh
  # Name:rsyncBackup.sh
  #定义数据库备份目录
  dataBackupDir=/tmp/mysqlbackup/
  # 定义备份服务器上存放备份数据的目录
  backupServerDir=/root/mysqlbackup/
  # 定义备份服务器
  backupServer=172.16.107.133
  # 同步备份文件到备份服务器
  rsync -a --delete $dataBackupDir -e ssh $backupServer:$backupServerDir > /dev/null 2>&1
  恢复服务器
  全部恢复
  mysqldump --user=root -p --all-databases > /backup/mysql.sql
  DB恢复
  /usr/local/mysql/bin/mysql -uroot -pUserPWD db_name < db_name.sql
  增量恢复
  1.对于任何可适用的更新日志,将它们作为 mysql 的输入
  % ls -t -r -1 HOSTNAME-bin* | xargs mysqlbinlog | mysql -uUser –pUserPWD
  2.一般恢复
  /usr/local/mysql/bin/mysqlbinlog mysql-bin.000052 | mysql -uUser -pUserPWD
  定制任务
  #crontab –e
  10 4 * * 1-6 /tmp/mysql_daily_bak.sh   #礼拜一到礼拜六运行每天备份脚本
  10 4 * * 0 /tmp/mysql_full_bak.sh   #礼拜天执行全备份的脚本


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-556061-1-1.html 上篇帖子: mysql 从库状态监控shell 下篇帖子: shell 脚本编程之for语句、if语句(2 )
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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