【实用脚本】使用xtrabackup实现不落地异地备份
脚本说明
通过xtrabackup在从库进行备份,并且将数据库推送到其他服务器存放,数据库在从库服务器本地不会落盘,可以节约磁盘空间
#!/bin/bash USER=dba PWD=123456 HOST=10.3.0.243 MYCNF=/etc/my.cnf PORT=3306 TO_HOST=10.3.0.234 TO_DIR=/data/mysql_backup/tpdb TAG="mysqlfull" DATE=$(date +%F) BASEDIR=/data/dbbak30006 BAKFILE=${TAG}_${DATE}_${PORT}.xbstream LOGFILE=${TAG}_${DATE}.log if [ ! -d "/xtrabackup_backupfiles" ];then mkdir /xtrabackup_backupfiles fi #关闭多线程 /usr/local/mysql/bin/mysql -udba -p123456 -S /tmp/mysql30006.sock -e "SET GLOBAL slave_parallel_workers=0;" /usr/local/mysql/bin/mysql -udba -p123456 -S /tmp/mysql30006.sock -e "show variables like 'slave_parallel_workers';" &>>$BASEDIR/$LOGFILE ## backup+compress+scp echo "开始物理备份 $(date +%F\ %T)" >>$BASEDIR/$LOGFILE /usr/bin/xtrabackup --defaults-file=$MYCNF --backup --slave-info --safe-slave-backup --user=$USER --password=$PWD --host=$HOST --port=$PORT --no-timestamp --stream=xbstream 2>>"$BASEDIR/$LOGFILE" | lz4 -B4 | ssh $TO_HOST -p24 "cat - >$TO_DIR/$BAKFILE" #备份检查 bak_result=`grep "completed OK" $BASEDIR/$LOGFILE |wc -l` if [ $bak_result -eq 1 ];then echo "实例($HOST:$PORT)备份成功 $(date +%F\ %T)" | mail -s "实例($HOST:$PORT)备份成功 $(date +%F\ %T)" ops@huize.com,lome@huize.com else echo "实例($HOST:$PORT)备份失败 $(date +%F\ %T)" | mail -s "实例($HOST:$PORT)备份失败 $(date +%F\ %T)" ops@huize.com,lome@huize.com fi #开启多线程 /usr/local/mysql/bin/mysql -udba -p123456 -S /tmp/mysql30006.sock -e "SET GLOBAL slave_parallel_workers=8"; /usr/local/mysql/bin/mysql -udba -p123456 -S /tmp/mysql30006.sock -e "show variables like 'slave_parallel_workers';" &>>$BASEDIR/$LOGFILE scp -P24 $BASEDIR/$LOGFILE $TO_HOST:$TO_DIR/
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论