分别基于innobackupex备份工具的mysql全量备份和增量备份shell脚本 – 21运维
通知: .-...

分别基于innobackupex备份工具的mysql全量备份和增量备份shell脚本

linux 21运维 3737浏览 0评论

之前有过一个基于innobackupex备份mysql文章,不是很简单实用。这里是一个更为简单的脚本,可以实现分别基于innobackupex备份工具的mysql全量备份和增量备份。
注意:
1,线上用的时候请注意将自己的用户名和密码都设置对,这里password密码我暂时用xxxxxx代替。当然,你也可以建立专用于备份用的数据库用户并设置权限。
2,根据情况设置一个任务计划。
mysql全量备份脚本如下

#!/bin/bash
#author:21yunwei
logfile="/home/mysqlbak/mysql_full_bak_time.log"
backuplogfile="/home/mysqlbak/mysqlbackup.log"
mysql_bakdir="/home/mysqlbak/"
user=root
password=xxxxxx

[ ! -d $mysql_bakdir  ] &&  mkdir -p $mysql_bakdir
[ ! -f  $logfile ] && touch  $logfile

innobackupex --defaults-file=/etc/my.cnf --user=${user} --password=${password} --compress –-parallel=4 –-throttle=400 --stream=tar ${mysql_bakdir} 2>&1 >> $backuplogfile
reset=$?
finishtime=`date +%Y%m%d_%H%M%S`
[ ${reset} -eq 0 ] && echo  "Mysql fullbakup  finished, time: $finishtime">>  $logfile || echo "Mysql fullbakup failed,please check time:$finishtime" >>  $logfile

mysql增量备份脚本如下:

#!/bin/bash
#author:21yunwei
time=`date -d '-3 day' +%Y-%m-%d`
logfile="/home/mysqlbak/mysql_full_bak_time.log"
mysql_bakdir="/home/mysqlbak/"
user=root
password=xxxxxx
lastfullbakdir=`ls /home/mysqlbak/ |grep ${time}`

[ ! -d $mysql_bakdir  ] &&  mkdir -p $mysql_bakdir
[ ! -d  $logfile ] && touch  $logfile

innobackupex --defaults-file=/etc/my.cnf --user=${user} --password=${password} --incremental-basedir=${mysql_bakdir}/${lastfullbakdir}  --incremental ${mysql_bakdir}
finishtime=`date +%Y%m%d_%H%M%S`
[ $? -eq 0 ] && echo  "Mysql fullbakup  finished, time: $finishtime">>   $logfile || echo "Mysql fullbakup failed,please check time:$finishtime">>  $logfile

转载请注明:21运维 » 分别基于innobackupex备份工具的mysql全量备份和增量备份shell脚本

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (2)

  1. 还是手动备份比较安全啊,好长时间没来了
    T讯脚印2016-12-05 11:55 回复
    • 欢迎归来。 能自动化最好,人为操作比较操心。如果库比较大,这个全备和增量占用磁盘空间比较大,写了任务计划脚本以后也要加一个超过多少天的删除,避免长时间驻留把磁盘耗尽。机器多也可以通过主从方式备份或异地容灾。当然,现在有了RDS,这种人为搭建的数据库将陆续被淘汰。
      21运维2016-12-05 13:12 回复