溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

xtrabackup自動(dòng)全備份腳本

發(fā)布時(shí)間:2020-08-08 17:05:16 來(lái)源:ITPUB博客 閱讀:211 作者:royevictory 欄目:MySQL數(shù)據(jù)庫(kù)
xtrabackup自動(dòng)全備份腳本,具有發(fā)送郵件和主從判斷功能.
##set environment##
. ~/.bash_profile
BASEDIR="/data_bak" 
SPACE_RATE=95        #space rate 95
SPACE_ROOM=10485760  #10GB
WORKPATH=/data_bak/mysqlbackup/percona
DATETIME=`date '+%Y%m%d%H%M'`
INNOBACKUPEX="/usr/bin/innobackupex-1.5.1"
MYSQL="/home/mysqlapp/product/bin/mysql"
BACKUP_USER="root"
BACKUP_PASSWD="******"
BACKUP_HOST="localhost"
BACKUP_PORT="3306"
DEFAULTS_FILE="/home/mysqlapp/config/my.cnf"
SOCKET="/home/mysqlapp/dbdata/mysqld.sock"
DATE_VAR=`date +%F_%H-%M-%S`


MAIL_LIST="xianyezhao@richinfo.cn"
MAIL_BIN="/home/crond/bsmtp"
MAIL_IP="*****"


#sent mail:0 error backup; 1 success backup
my_sentmail()
{
if [ $1 == 1 ]; then
   echo " " | ${MAIL_BIN} -f `hostname`@139.com -h smtp.api.localdomain -s "${MAIL_IP}:Succes Innobackupex backup"  ${MAIL_LIST}  < ${WORKPATH}/maillog/mail_dba_${WORKDATE}.log
else
   echo " " | ${MAIL_BIN} -f `hostname`@139.com -h smtp.api.localdomain -s "${MAIL_IP}:Error Innobackupex backup"  ${MAIL_LIST}  < ${WORKPATH}/maillog/mail_dba_${WORKDATE}.log
fi
}


# Step 1: if slave status is ok,then backup the databases,else send error information and exit
$MYSQL -u$BACKUP_USER -h$BACKUP_HOST  -p$BACKUP_PASSWD -Bse"show slave status \G">${WORKPATH}/slave_status.txt
SLAVE_IO_RUNNING_STATUS=`cat ${WORKPATH}/slave_status.txt|grep Slave_IO_Running|cut -d: -f2|sed s/[[:space:]]//g`
SLAVE_SQL_RUNNING_STATUS=`cat ${WORKPATH}/slave_status.txt|grep Slave_SQL_Running|cut -d: -f2|sed s/[[:space:]]//g`


if [ ${SLAVE_IO_RUNNING_STATUS} != Yes ]; then 
echo "SLAVE_IO_RUNNING_STATUS is not Yes">${WORKPATH}/maillog/mail_dba_${WORKDATE}.log
my_sentmail 0
exit 0
fi


if [ ${SLAVE_SQL_RUNNING_STATUS} != Yes ]; then 
echo "SLAVE_SQL_RUNNING_STATUS is not Yes">${WORKPATH}/maillog/mail_dba_${WORKDATE}.log
my_sentmail 0
exit 0
fi


# Step 2: To check the backup work directory room
# if nfs then $1 and $4
SPACE_ROOM_CK=`df -k | grep "$BASEDIR" | awk '{print $2}'`
SPACE_USED_RATE=`df -k | grep "$BASEDIR" | awk '{print $5}' |awk -F% '{print $1}'`


if [ ${SPACE_USED_RATE} -lt ${SPACE_RATE} ] && [ ${SPACE_ROOM_CK} -gt ${SPACE_ROOM} ]
then
    echo "There have enough room for backup,let goto backup our database now" >> ${WORKPATH}/log/${BACKUP_FILE_NAME}_$WORKDATE.log
else
    echo "There have not enough room for our backup work,sadly to heard that" >> ${WORKPATH}/log/${BACKUP_FILE_NAME}_$WORKDATE.log
    echo -e "The backup task fail cause for there have not enough space room for backup on directory \nDatabase's IP is ${BACKUP_HOST}" > ${WORKPATH}/maillog/mail_dba_${WORKDATE}.log
    my_sentmail 0
    exit 0
fi




##Step 3:rm dmp file before 2 copys
cd $WORKPATH/$1
keepday=`ls -l|grep MYSQLBACKUP|wc -l`
if [ $keepday -gt 1 ]
then
 rm -fr `ls -lt|grep MYSQLBACKUP|tail -n 1|awk '{print $9}'`
fi


##Step 4:make  dir
cd $WORKPATH/$1
TMPDIR="MYSQLBACKUP"`date '+%Y%m%d'`
if [ ! -f  ${TMPDIR} ]
then
mkdir ${TMPDIR}
fi


#Step 5:to backup
cd $TMPDIR
${INNOBACKUPEX} --user=${BACKUP_USER} --password=${BACKUP_PASSWD} --defaults-file=${DEFAULTS_FILE} --socket=${SOCKET} $WORKPATH/$1/${TMPDIR}/ 2>$WORKPATH/log/$1_${DATE_VAR}.log




# echo The success info to the send mail information file
echo `date '+%Y%m%d%H%M'` > ${WORKPATH}/maillog/mail_dba_${WORKDATE}.log
echo "Today backup success. " >> ${WORKPATH}/maillog/mail_dba_${WORKDATE}.log
echo `hostname`" for databases:"${ALL_DATABASES}>> ${WORKPATH}/maillog/mail_dba_${WORKDATE}.log
echo "Database's IP is ${BACKUP_HOST}">> ${WORKPATH}/maillog/mail_dba_${WORKDATE}.log


echo `date '+%Y%m%d%H%M'` >> ${WORKPATH}/log/${BACKUP_FILE_NAME}_$WORKDATE.log
echo "Today backup success! " >> ${WORKPATH}/log/${BACKUP_FILE_NAME}_$WORKDATE.log
echo `hostname`" for databases:"${ALL_DATABASES} >> ${WORKPATH}/log/${BACKUP_FILE_NAME}_$WORKDATE.log
echo "Database's IP is ${BACKUP_HOST}">> ${WORKPATH}/log/${BACKUP_FILE_NAME}_$WORKDATE.log
my_sentmail 1
exit 0

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI