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