分别基于innobackupex备份工具的mysql全量备份和增量备份shell脚本
之前有过一个基于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