暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

基于innobackupex的备份脚本

戏水蓝鲸 2017-07-05
677

2017年7月4号晚,知春路沸腾渔乡,和几位第一代互联网人来了个亲密接触,把酒言欢,很难得大家都能聊的来。

尤为难得是蜂鸟网cto郭枫先生是我的同乡,第一代互联网人,年长我3岁,老家的家庭住址更是不超过2公里,温文尔雅的男人,身上已经丝毫没有辽宁人身上的标记。

高书葆先生号称是技术界里做销售最牛的人,第一代互联网人,今日一见,技术与销售都已登峰造极。

脉脉运维总监黄华平,绰号兔子,一头飘逸卷发的帅男子,辽宁女婿,运维圈中的精英,几天前我才搞清楚黄华平总监的性别,惭愧惭愧。

胡照岷总监,已经支持我司很多,今日组局,万分感谢。

新乐兄,略微腼腆,但确是性情中人。

从左至右:脉脉运维总监黄华平、蜂鸟网cto郭枫、我、置顶网cto高书葆,ucloud销售leader胡照岷、置顶网技术负责人卢新乐


言归正传,基于indbbackupex的备份脚本,支持单次全备份与累积增量备份,行数不多,不一一描述了,有问题可以添加本人微信:8173960(戏水蓝鲸)


#!/bin/bash

######################################################

#@@@ Author      : bluewhalew(wanghui@konwbox.cn)

#@@@ Name        : Xtrabackup_backup_db.sh

#@@@ Describe    : Backup db

#@@@ Created  in : 20140321

#@@@ Modified in : 20170316

######################################################

##### BACKUP SERVER INFO #####

INNOBACKUPEX_NAME=innobackupex

INNOBACKUPEX_PATH=/usr/bin/$INNOBACKUPEX_NAME

MY_CNF=/etc/my.sskbs.cnf

SOCKET=`more $MY_CNF|grep sock|cut -d '=' -f 2|awk 'gsub(/^ *| *$/,"")'`

PORT=`more $MY_CNF|grep port|cut -d '=' -f 2|awk 'gsub(/^ *| *$/,"")'`

MYSQL=/usr/local/mysql/bin/mysql

MYSQL_ADMIN=/usr/local/mysql/bin/mysqladmin

##### USER AND PASSWORD #####

USER=bkpuser

PASSWD=bkpuser

##### BACKUP INFO #####

BACKUP_DIR=/data/dbbackupSC/sskbs

FULL_LSN_PRI_DIR=$BACKUP_DIR/fullsndir

BACKUP_LOG_DIR=$BACKUP_DIR/log

BACKUP_LOG=$BACKUP_LOG_DIR/innobackupex.log

FULL_BACKUP_DATE=Sun

##### TARGET SERVER PARAMETER INFORMATION #####

TARGET_BACK_PRI_DIR=/data/dbbackupSC/sskbs

TARGET_FBACK_PRI_DIR=$TARGET_BACK_PRI_DIR/full

TRAGET_IBACK_PRI_DIR=$TARGET_BACK_PRI_DIR/incr

TARGET_XTREAM_PRI_DIR=$TARGET_BACK_PRI_DIR/xbstream

TARGET_FBACK_XTREAM_PRI_DIR=$TARGET_XTREAM_PRI_DIR/full

TARGET_IBACK_XTREAM_PRI_DIR=$TARGET_XTREAM_PRI_DIR/incr

BACKUP_DATE=`date +%Y-%m-%d_%H-%M-%S`

TARGET_FBACK_DIR=$TARGET_FBACK_PRI_DIR/$BACKUP_DATE

TARGET_IBACK_DIR=$TRAGET_IBACK_PRI_DIR/$BACKUP_DATE

DATESTR=`date`

TARGET_HOST_IP=100.100.100.100

#############################################################################

#echo error and exit

#############################################################################

error()

{

    echo "$1" 1>&2

    exit 1

}

#check backup envirment

if [ ! -x $INNOBACKUPEX_PATH ]; then

        error "$INNOBACKUPEX_PATH not installed or not connect to /usr/bin."

fi

if [ ! -d $BACKUP_DIR ]; then

        mkdir $BACKUP_DIR

        #error "backup target dir : $BACKUP_DIR is not exist."

fi

if [ ! -d $BACKUP_LOG_DIR ]; then

        mkdir -p $BACKUP_LOG_DIR

fi

if [ ! -f $BACKUP_LOG ]; then

        touch $BACKUP_LOG

fi

if [ ! -d $FULL_LSN_PRI_DIR ]; then

        mkdir -p $FULL_LSN_PRI_DIR

fi

chown -Rf mysql:mysql $BACKUP_DIR

mysql_status=`netstat -nl | awk 'NR>2{if ($4 ~ /.*:3306/) {print "Yes";exit 0}}'`

if [ "$mysql_status" != "Yes" ];then

        error "MySQL is not running."

fi

#backup head info

echo "----------------------------"   >> $BACKUP_LOG

echo                                  >> $BACKUP_LOG

echo "$0: MySQL BACKUP SHELL"         >> $BACKUP_LOG

echo "Starting: `date +%F' '%T' '%w`" >> $BACKUP_LOG

echo                                  >> $BACKUP_LOG

starttime=$(date +%s)

FULL_LSNDIR=$FULL_LSN_PRI_DIR/$BACKUP_DATE

LATEST_FULL_BACKUP_LSNDIR=`find $FULL_LSN_PRI_DIR -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort -nr | head -1`

FULL_BACKUP_EXIST_N_OR_Y=`find $FULL_LSN_PRI_DIR -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | wc -l`

if [ $FULL_BACKUP_EXIST_N_OR_Y -eq 0 ];then

        echo "Full backup not exist.............." >> $BACKUP_LOG

        echo "Starting Full backup .............." >> $BACKUP_LOG

        echo "$INNOBACKUPEX_PATH --defaults-file=$MY_CNF  --use-memory=4G --parallel=4 --throttle=200 --host=localhost --port=$PORT --socket=$SOCKET --user=$USER --password=$PASSWD  --slave-info --extra-lsndir=$FULL_LSNDIR --stream=xbstream /tmp |ssh root@

$TARGET_HOST_IP cat > $TARGET_FBACK_XTREAM_PRI_DIR/$BACKUP_DATE.xbstream" >> $BACKUP_LOG

        $INNOBACKUPEX_PATH --defaults-file=$MY_CNF  --use-memory=4G --parallel=4 --throttle=200 --host=localhost --port=$PORT --socket=$SOCKET --user=$USER --password=$PASSWD --slave-info --extra-lsndir=$FULL_LSNDIR -stream=xbstream /tmp |ssh root@$TARGET_

HOST_IP "cat > $TARGET_FBACK_XTREAM_PRI_DIR/$BACKUP_DATE.xbstream"

        endtime=$(date +%s)

        costtime=$(($endtime - $starttime))

        echo                                             >> $BACKUP_LOG

        echo "##### Backup cost time $costtime s #####"  >> $BACKUP_LOG

        echo "Ending:   `date +%F' '%T' '%w`"            >> $BACKUP_LOG

        echo "$0: MySQL BACKUP SHELL"                    >> $BACKUP_LOG

        echo                                             >> $BACKUP_LOG

        echo "----------------------------"              >> $BACKUP_LOG

        error

fi

#if [ ${DATESTR:0:3} == $FULL_BACKUP_DATE ] || [ $# -gt 0  ];then

if [ "Sun" == $FULL_BACKUP_DATE ] || [ $# -gt 0  ];then

        echo "Full backup .............." >> $BACKUP_LOG

        echo "$INNOBACKUPEX_PATH --defaults-file=$MY_CNF  --use-memory=4G --parallel=4 --throttle=200 --host=localhost --port=$PORT --socket=$SOCKET --user=$USER --password=$PASSWD --slave-info --extra-lsndir=$FULL_LSNDIR --stream=xbstream /tmp |ssh root@$

TARGET_HOST_IP cat > $TARGET_FBACK_XTREAM_PRI_DIR/$BACKUP_DATE.xbstream" >> $BACKUP_LOG

        $INNOBACKUPEX_PATH --defaults-file=$MY_CNF  --use-memory=4G --parallel=4 --throttle=200 --host=localhost --port=$PORT --socket=$SOCKET --user=$USER --password=$PASSWD --slave-info --extra-lsndir=$FULL_LSNDIR --stream=xbstream /tmp |ssh root@$TARGET

_HOST_IP "cat > $TARGET_FBACK_XTREAM_PRI_DIR/$BACKUP_DATE.xbstream"

else

        echo "Incr backup .............." >> $BACKUP_LOG

        echo "$INNOBACKUPEX_PATH --defaults-file=$MY_CNF  --use-memory=4G --parallel=4 --throttle=200 --host=localhost --port=$PORT --socket=$SOCKET --user=$USER --password=$PASSWD --slave-info --incremental-basedir=$FULL_LSN_PRI_DIR/$LATEST_FULL_BACKUP_LS

NDIR --incremental --stream=xbstream /tmp |ssh root@$TARGET_HOST_IP cat > $TARGET_IBACK_XTREAM_PRI_DIR/$BACKUP_DATE.xbstream" >> $BACKUP_LOG

        $INNOBACKUPEX_PATH --defaults-file=$MY_CNF  --use-memory=4G --parallel=4 --throttle=200 --host=localhost --port=$PORT --socket=$SOCKET --user=$USER --password=$PASSWD --slave-info --incremental-basedir=$FULL_LSN_PRI_DIR/$LATEST_FULL_BACKUP_LSNDIR -

-incremental --stream=xbstream /tmp |ssh root@$TARGET_HOST_IP "cat > $TARGET_IBACK_XTREAM_PRI_DIR/$BACKUP_DATE.xbstream"

fi

endtime=$(date +%s)

costtime=$(($endtime - $starttime))

echo                                             >> $BACKUP_LOG

echo "##### Backup cost time $costtime s #####"  >> $BACKUP_LOG

echo "Ending:   `date +%F' '%T' '%w`"            >> $BACKUP_LOG

echo "$0: MySQL BACKUP SHELL"                    >> $BACKUP_LOG

echo                                             >> $BACKUP_LOG

echo "----------------------------"              >> $BACKUP_LOG


文章转载自戏水蓝鲸,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论