mysql备份脚本

#!/bin/bash
#Shell variables
SHELLNAME="mysqlbak"
SCRIPTDIR="/data/dbbackup/"
BACKUPDIR="/data/dbbackup/"
LOGFILE=$SCRIPTDIR"/"$SHELLNAME".log"

#Date/Time veriables
REMAINDAYS="3"
CDATE=$(date "+%Y-%m-%d")
CTIME=$(date "+%H-%M-%S")

#Rsync variables
RSYNCUSER="backup"
RSYNCPASS=$SCRIPTDIR"/rsyncpasswd"
RSYNCCMD="/usr/bin/rsync"
DHOST="192.168.1.12"
DDIR="expert"
SDIR=$CDATE

#mysqldump veriables
MYSQLUSER="root"
MYSQLPASS="123"
MYSQLDUMPCMD="/usr/bin/mysqldump"
DBNAME="blog"

#write log
writelog(){
    ERRINFO=$1
    echo "$CDATE $CTIME : ${SHELLNAME} : ${ERRINFO}" >> ${LOGFILE}
}

#alters the scheduling priority of shell
low_priority(){
    writelog "Begin renice priority of shell"
    renice +19 -p $$ >/dev/null 2>&1
    if [ $? -ne 0 ];then
        writelog "renice failed"
        return 1
    else
        writelog "renice success"
        return 0
    fi
}

#Delete old Backup Data with RemainDays
delete_dir(){
    writelog "begin to delete old dir"
    cd $BACKUPDIR
    find ./ -maxdepth 1 -name "2011*" -type d -mtime +$REMAINDAYS -exec rm -rf {} \;
    if [ $? -ne 0 ];then
        writelog "delete old dir failed"
        return 1
    else
        writelog "delete old dir success"
        return 0
    fi
}

#Copy the Backup Data to Backup Server
rsync_file(){
    writelog "begin to rsync file"
    cd $BACKUPDIR;
    $RSYNCCMD -vzrtopg $SDIR $RSYNCUSER@$DHOST: DDIR --password-file=$RSYNCPASS
    if [ $? -ne 0 ];then
        writelog "rsync $SFILE to $DHOST failed"
        return 1;
    else
        writelog "rsync $SFILE to $DHOST success"
        return 0;
    fi
}

mysql_dump(){
    writelog "begin to mysqldump"
    MYSQLDUMPOPTION="-u "$MYSQLUSER" -p"$MYSQLPASS" --hex-blob -R  --no-autocommit"
    FILENAME="$DBNAME"_"$CDATE"_"$CTIME"".sql"
   
    cd $BACKUPDIR
    $MYSQLDUMPCMD $MYSQLDUMPOPTION $DBNAME > $FILENAME
    if [ $? -ne 0 ];then
        writelog "mysqldump $DBNAME failed"
        return 1
    else
        writelog "mysqldump $DBNAME success"
    fi

    tar -zcvf  $FILENAME".tgz" $FILENAME
    if [ $? -ne 0 ];then
        writelog "tar -zcvf  "$FILENAME".tgz $FILENAME failed"
        return 1
    else
        writelog "tar -zcvf  "$FILENAME".tgz $FILENAME success"
    fi
    rm -f $FILENAME
    mkdir -p $CDATE
    md5sum $FILENAME".tgz" > $CDATE/$FILENAME".tgz.MD5"
    mv $FILENAME".tgz" $CDATE
}

############ main ##################
main(){
    low_priority;
    mysql_dump;
    if [ $? -ne 0 ];then
        return 1
    fi
    rsync_file ;
    if [ $? -ne 0 ];then
        return 1
    fi
    delete_dir;
    if [ $? -ne 0 ];then
        return 1
    fi
    return 0
}

main
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值