#!/usr/bin/env bash
#云商mysql数据库,expire_logs_days=30
#脚本实现将不再续写的mysqlbinlog文件生成压缩文件,做备份
#定义数据库目录和数据目录
mysqldir=/var/lib/mysql
datadir=${mysqldir}
#定义备份目录
databackupdir=/home/shenliang
BkupDir=${databackupdir}/backup
if [[ ! -d ${BkupDir} ]]; then
mkdir ${BkupDir} -p
fi
#定义邮件正文文件
emailfile=${databackupdir}/email.txt
#定义备份日志文件
logfile=${databackupdir}/mysqlbackup.log
echo "" > ${emailfile}
echo $(date +"%Y-%m-%d %H:%M:%S") >> ${emailfile}
#刷新binlog日志文件
mysqladmin -u root -p‘‘ flush-logs
cd ${datadir}
#得到二进制日志列表
filelist=`cat mysql-bin.index`
icounter=0
for file in ${filelist}
do
icounter=`expr ${icounter} + 1`
done
nextnum=0
ifile=0
for file in ${filelist}
do
binlogname=${file}
nextnum=`expr ${nextnum} + 1`
#跳过最后一个二进制日志 (数据库当前使用的二进制日志文件)
if [[ ${nextnum} -eq ${icounter} ]]; then
echo "$(date +"%Y-%m-%d %H:%M:%S") Skip lastest!" >> ${emailfile}
else
dest=${BkupDir}/${binlogname}.tar.bz2
#跳过已经备份的二进制日志文件
if [[ -e ${dest} ]]; then
echo "$(date +"%Y-%m-%d %H:%M:%S") Skip exist ${binlogname}!" >> ${emailfile}
else
#压缩并备份日志文件到备份目录
tar -jcvf ${dest} ${binlogname}
if [[ "$?" == 0 ]]; then
ifile=`expr ${ifile} + 1`
echo "$(date +"%Y-%m-%d %H:%M:%S") ${binlogname} Backup Success!" >> ${emailfile}
fi
fi
fi
done
if [[ ${ifile} -eq 0 ]]; then
echo "$(date +"%Y-%m-%d %H:%M:%S") No Binlog Backup!" >> ${emailfile}
else
echo "$(date +"%Y-%m-%d %H:%M:%S") Backup $ifile File(s)." >> ${emailfile}
echo "$(date +"%Y-%m-%d %H:%M:%S") Backup MySQL Binlog OK!" >> ${emailfile}
fi
#写日志文件
echo "-------------------------------------------------" >> ${logfile}
#发送邮件通知
cat ${emailfile} >> ${logfile}
email=shen.liang@eascs.com
#cat ${emailfile} | mail -s "Mysql Binlog Backup" ${email}
原文:https://www.cnblogs.com/longlongaway/p/11720565.html