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

[经验分享] mysql完全+增量备份脚本

[复制链接]

尚未签到

发表于 2018-10-6 12:41:03 | 显示全部楼层 |阅读模式
  mysql增量备份脚本
  #!/bin/bash
  dateDIR=$(date -d "yesterday" +"%y-%m-%d")
  mkdir -p /data/backup/mysql/binlog/$dateDIR
  ##刷新缓存中的日志
  mysqladmin -uroot -p flush-logs
  #7天前的时间
  TIME=$(date "-d 7 day ago" +"%Y-%m-%d %H:%M:%S")
  #24小时前的时间
  StartTime=$(date "-d 1 day ago" +"%Y-%m-%d %H:%M:%S")
  #删除7天前的2进制文件
  mysql -uroot -p -e "purge master logs before '${TIME}';"
  #针对每个数据库
  for db in $(mysql -uroot -p -e "show databases" | grep -e "zabbixdatabases" -e"serverdatabases")
  do
  #针对所有的日志文件
  for log in $(cat /var/lib/mysql/mysql-bin.index)
  do
  #备份每个数据库24小时之前到现在时间的所有日志,写入到相应文件中
  mysqlbinlog -uroot -p -d $db --start-datetime="$StartTime" ${log} > /data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR}.sql
  done
  #tar jcvf /data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR}.tar.bz2 /data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR} 2&>/dev/null
  #rm -rf /data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR}
  done
  #删除20天以前的增量备份文件和目录
  find /data/backup/mysql/binlog/* -mtime +19 -type d -exec rm -rf {} \;
  mysql全备份脚本
  A:
  [root@localhost ~]# cat /data/sh/login_back_mysql.sh
  #!/bin/bash
  ##--------------------------------------------------------------    -----------
  #Filename:  login_mysql.sh
  #Revision:  0.1
  #Date:      2015/11/07
  #Author:    han
  #Email:     hz77@163.com
  #Description:   use mysqldump tools to backup mysql
  #Notes:
  #--------------------------------------------------------------    ----------
  date=`date +%Y%m%d%H`
  bakdir="/data/backup/back_mysql"
  logFile="/home/backup/back_mysql/mysqlbak.log"
  user="root"
  pass="1234"
  PORT=3307
  MySQL_PORT=3306
  if [ ! -d $bakdir ];then mkdir -pv $bakdir;fi
  cd $bakdir
  function backup_mysql {
  for dbname in $1 $2 $3 $4 $5 $6 $7 $8 $9
  do
  mysqldump -u$user -p$pass -S /tmp/mysql${MYSQL_PORT}.sock --default-character-set=utf8mb4  --opt  --master-data=2 --extended-insert=false --triggers -R --hex-blob  --events --single-transaction --quick -B  $dbname > $bakdir/${dbname}_${date}.sql
  tar zcvf ${dbname}_${date}.sql.tar.gz ${dbname}_${date}.sql
  rm ${dbname}_${date}.sql -f
  #scp $bakdir/${dbname}_${date}.sql.tar.gz  192.168.0.100:/data/backup/db-1/ || scp $bakdir/${dbname}_${date}.sql.tar.gz
  done
  }
  backup_mysql  db1 db2 db3 db4 db5 db6 db7 db8
  find /data/backup/back_mysql/  -ctime +20 -exec rm -fr {} \;
  1 #!/bin/bash
  2
  3 date=`date +%Y-%m-%d`
  4
  5 bakdir="/home/mysqlbackup"
  6 mvdir="/home/mysqlbackup/mv"
  7 logFile="/home/mysqlbackup/log/mysqlbak.log"
  8 user="root"
  9 pass="passwd"
  10 filename="database-$date.sql"
  11 filenamee="databases-$date.sql"
  12
  13 if [ ! -d $bakdir ];then mkdir -pv $bakdir;fi
  14
  15         cd $bakdir
  16         mv $bakdir/$filename.tgz $mvdir/
  17         mv $bakdir/$filenamee $mvdir/
  18         rm -f $bakdir/$filename
  19
  20 /home/mysql/bin/mysqldump --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob --flush-logs --events --single-transaction --quick -B dabases -u$user -p$pass > $filename
  21 /home/mysql/bin/mysqldump --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob --flush-logs --events --single-transaction --quick -B databases -u$user -p$pass >
  $filenamee 22
  23 echo "开始打包备份文件"
  24 echo "$filename $filenamee 数据库备份成功,备份文件在192.168.0.10:/root/home/mysqlbackup目录下;" > $logFile
  25 /bin/tar czvf $filename.tgz $filename
  26
  27 /bin/find $mvdir  -type f -ctime +3 -exec rm -fr {} \;
  28 #/bin/tar czvf $filenamee.tgz $filename
  29 scp $bakdir/$filename.tgz 192.168.0.10:/root/home/mysqlbackup
  30 scp $bakdir/$filenamee 192.168.0.10:/root/home/mysqlbackup
  31
  32        mv $bakdir/$filename.tgz $mvdir/
  33        mv $bakdir/$filenamee $mvdir/
  34        rm -f $bakdir/$filename
  35
  36 ssh 192.168.0.10 '/bin/find /root/home/mysqlbackup -type f -atime +3 -exec rm -fr {} \;'
  37 #只保留最近四天的数据
  ~
  或者:
  2 # Program
  3 # #    use mysqldump to Fully backup mysql data per week!
  4 # # History
  5 # #    2015-04-02 jin    first
  6 # # path
  7 # #    ....
  8  # 备份文集的目录,日志目录,时间,用户,密码
  9  BakDir="/root/djback/backup"
  10  LogFile="/root/djback/backup/bak.log"
  11  Date=`date +%Y%m%d`
  12  Begin=`date +"%Y年%m月%d日 %H:%M:%S"`
  13  user="root"
  14  pass="passwd"
  15 #如果文件不存在就创建
  16 if [ ! -d $BakDir ];then mkdir -pv $BakDir;fi
  17 cd $BakDir
  18 #备份文件名字和压塑后的问件名
  19 DumpFile=data-$Date.sql
  20 GZDumpFile=data-$Date.sql.tgz
  21 DumpFilee=databa-$Date.sql
  22 GZDumpFilee=databa-$Date.sql.tgz
  23  #备份qiv库
  24  /home/mysql/bin/mysqldump --default-character-set=utf8  --opt --extended-insert=false --master-data=2 --triggers -R --hex-blob --flush-logs --events --single-transaction --quick  -B data -u$user -p
  $pass > $BakDir/$DumpFile 25 #备份qiv_secretcode库
  26  /home/mysql/bin/mysqldump --default-character-set=utf8  --opt --extended-insert=false --master-data=2 --triggers -R --hex-blob --flush-logs --events --single-transaction --quick  -B  databa
  e -u$user -p$pass > $BakDir/$DumpFilee 27 sed -n "22p" $BakDir/$DumpFilee | awk -F'=|,|;' '{print $2,$4}' >$BakDir/postion
  28 # 压缩备份文件
  29 /bin/tar czvf $GZDumpFile $DumpFile
  30
  31 /bin/tar czvf $GZDumpFilee $DumpFilee
  32 # 删除以前的备份文件
  33 /bin/rm $DumpFile
  34 Last=`date +"%Y年%m月%d日 %H:%M:%S"`
  35 echo "开始:$Begin 结束:$Last $GZDumpFile succ
  36 sleep 2
  37 echo "(备份成功 备份的目录为/root/djback/backup下)"
  38 cd $BakDir/daily
  39 rm -f *
  40 echo "开始上传文件到192.168.0.10的/root/home/mysqlbackup/下"
  41 scp /root/djback/$DumpFile  192.168.0.10:/root/home/mysqlbackup/
  42 scp /root/djback/$DumpFilee 192.168.0.10:/root/home/mysqlbackup/
  43 echo "上传成功请查看"
  或者
  [root@db-1 sh]# cat login_back_mysql.sh
  #!/bin/bash
  ##--------------------------------------------------------------    -----------
  #Filename:  login_mysql.sh
  #Revision:  0.1
  #Date:      2015/11/07
  #Author:    hanye
  #Email:     hz77@163.com
  #Description:   use mysqldump tools to backup mysql
  #Notes:
  #--------------------------------------------------------------    ----------
  date=`date +%Y%m%d%H`
  bakdir="/data/backup/yx_back_mysql"
  logFile="/home/backup/yx_back_mysql/mysqlbak.log"
  user="root"
  pass="passwd"
  PORT=3307
  MySQL_PORT=3306
  if [ ! -d $bakdir ];then mkdir -pv $bakdir;fi
  cd $bakdir
  function backup_mysql {
  for dbname in $1 $2 $3 $4 $5 $6 $7 $8 $9
  do
  mysqldump -u$user -p$pass -S /tmp/mysql${MYSQL_PORT}.sock --default-character-set=utf8mb4  --opt  --master-data=2 --extended-insert=false --triggers -R --hex-blob  --events --single-transaction --quick -B  $dbname > $bakdir/${dbname}_${date}.sql
  tar zcvf ${dbname}_${date}.sql.tar.gz ${dbname}_${date}.sql
  rm ${dbname}_${date}.sql -f
  scp $bakdir/${dbname}_${date}.sql.tar.gz  192.168.0.150:/data/backup/db-1/ || scp $bakdir/${dbname}_${date}.sql.tar.gz  192.168.0.151:/data/backup/db-1/
  done
  }
  backup_mysql db_001 db_002 db_003 db_004 db_005 b_006 db_007 db_008
  find /data/backup/yx_back_mysql/  -ctime +20 -exec rm -fr {} \;


运维网声明 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-613806-1-1.html 上篇帖子: MySQL FOREIGN_KEY_CHECKS 下篇帖子: docker之单机构建mysql5.7主从服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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