【实用脚本】数据库远程备份脚本

TangLu 未命名 2022-08-30 620 0

脚本作用

通过Xtrabackup实现本地不落盘备份,备份文件经过压缩直接SSH传输到备份服务器集中管理

#!/bin/bash
USER=root
PWD=your_mysql_password
ssh_password=your_root_password
MYCNF=/etc/my.cnf
TO_HOST=172.20.252.10
TO_DIR=/data/backup/linuxe
TAG="linuxe"
INSTANCE_NAME="Linuxe"

if [ ! -d /data/backup ];then
  mkdir /data/backup
fi

rpm -qa | grep sshpass > /dev/null
if [ $? -ne 0 ];then
  yum install sshpass -y
fi

#如果需要邮件通知的话可以配置以下STMP信息
rpm -qa | grep mail > /dev/null
if [ $? -ne 0 ];then
  yum install mailx -y
  cat << EOF >> /etc/mail.rc
set from=linuxe@qq.com
set smtp=smtp.exmail.qq.com
set smtp-auth-user=linuxe@qq.com
set smtp-auth-password=123456
set smtp-auth=login
EOF
fi


rpm -qa | grep xtrabackup > /dev/null
if [ $? -ne 0 ];then
  yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm -y
  yum install percona-xtrabackup-24.x86_64 percona-toolkit -y
fi

BAKFILE=${TAG}_full_backup_$(date +%F).xbstream.lz4
BACKUP_LOG=/data/backup/${TAG}_full_backup_$(date +%F).log


echo > ${BACKUP_LOG}


## backup+compress+scp
echo "开始物理备份 $(date +%F\ %T)" >>$BACKUP_LOG

/usr/bin/xtrabackup  --defaults-file=$MYCNF --backup  --user=$USER --password=$PWD  --no-timestamp  --stream=xbstream 2>>"${BACKUP_LOG}" | lz4 -B4 | sshpass -p ${ssh_password} ssh -o StrictHostKeyChecking=no root@${TO_HOST}  "cat - >$TO_DIR/$BAKFILE"


#备份检查
bak_result=`grep "completed OK" ${BACKUP_LOG} |wc -l`
if [ $bak_result -eq 1 ];then
  echo -e "数据库实例:${INSTANCE_NAME}\n备份类型:全量备份\n备份时间 $(date +%F\ %T)" | mail -s "${INSTANCE_NAME}数据库实例全量备份成功" ops@huize.com
else
  echo -e "数据库实例:${INSTANCE_NAME}\n备份类型:全量备份\n备份时间 $(date +%F\ %T)" | mail -s "${INSTANCE_NAME}数据库实例全量备份失败" ops@huize.com
fi


 sshpass -p ${ssh_password} scp -P22 ${BACKUP_LOG} root@${TO_HOST}:${TO_DIR}/


评论