数据库备份是我们工作中的重中之重,但是往往很多时候我们不知道如何去做才好,如果没有一种能自动备份的脚本,天天去弄的话确实让人心烦意乱。下面就自己的认知写下自己的备份脚本,其实很多时候都是大同小异,和大家相同之处还请见谅。

执行之前需要先下载安装meb 企业线备份工具。

我的备份过程是按照每周的形式进行备份。也就是:

周一:全备    周二:增备    周三:增备   周四:累积备份  周五:增备  周六:全备  周日:累积备份

#!/bin/bash
#获取时间
weekday=`date +%A`
#目标路径
backup=/tmp/mysqlbackup
#备份命令路径
mebackup=/opt/meb/mysql-meb/bin/mysqlbackup
sock=/data/mysql56/mysql56.socket
#备份结果处理函数
success(){
        if [ $? -eq 0 ]
        then
                echo "*******************************************"
                echo "$weekday备份数据库成功"
                echo "备份数据大小"
                du -sh $backup/`date +%F`-$day
                echo "*******************************************"
                rmdir=$backup/`date -d"-7 day" +%F`-$day
                if [ -e $rmdir ]
                then
                        #备份成功后,要把7天前同一周几的备份给删除,要不然备份文件越积越多,占用空间
                        rm -rf $rmdir
                        sleep 2
                        echo "删除7天前$weekday数据成功"
                        echo "*******************************************"
                fi
        else
                meblog=`find $backup/\`date +%F\`-$day/meta/ |grep MEB_`
                [ -z $meblog ] && echo "备份失败,且不产生备份文件" ||cat $meblog
        fi
}
#备份过程
case "$weekday" in
        Monday )
day=1
                $mebackup --socket=$sock --user=root --password=123 --backup-dir=$backup/`date +%F`-1 backup &> /dev/null
            
                success
                ;;
        Tuesday )
day=2
                lsn=`cat $backup/\`date -d"-1 day" +%F\`-1/meta/backup_variables.txt |grep end_lsn|cut -d"=" -f2`
                $mebackup --socket=$sock --user=root --password=123 --incremental --start-lsn=$lsn --incremental-backup-dir=$backup/`date +%F`-2 backup &> /dev/null
                success
                ;;
        Wednesday )
day=3
lsn=`cat $backup/\`date -d"-1 day" +%F\`-2/meta/backup_variables.txt |grep end_lsn |cut -d"=" -f2`
                $mebackup --socket=$sock --user=root --password=123 --incremental --start-lsn=$lsn --incremental-backup-dir=$backup/`date +%F`-3 backup &> /dev/null
                success
                ;;
        Thursday )
day=4
                lsn=`cat $backup/\`date -d"-3 day" +%F\`-1/meta/backup_variables.txt |grep end_lsn |cut -d"=" -f2`
                $mebackup --socket=$sock --user=root --password=123 --incremental --start-lsn=$lsn --incremental-backup-dir=$backup/`date +%F`-4 backup &> /dev/null
success
                ;;
        Friday )
day=5
                lsn=`cat $backup/\`date -d"-1 day" +%F\`-4/meta/backup_variables.txt |grep end_lsn |cut -d"=" -f2`
                $mebackup --socket=$sock --user=root --password=123 --incremental --start-lsn=$lsn --incremental-backup-dir=$backip/`date +%F`-5 backup &> /dev/null
                success
                ;;
        Saturday )
day=6
                lsn=`cat $backup/\`date -d"-1 day" +%F\`-5/meta/backup_variables.txt |grep end_lsn |cut -d"=" -f2`
                $mebackup --socket=$sock --user=root --password=123 --incremental --start-lsn=$lsn --incremental-backup-dir=$backip/`date +%F`-6 backup &> /dev/null
success
                ;;
        Sunday )
day=7
                lsn=`cat $backup/\`date -d"-3 day" +%F\`-4/meta/backup_variables.txt |grep end_lsn |cut -d"=" -f2`
                $mebackup --socket=$sock --user=root --password=123 --incremental --start-lsn=$lsn --incremental-backup-dir=$backip/`date +%F`-7 backup &> /dev/null
                day=7
                success
                ;;
        *)
                echo "日期有误"
esac