Mysq binlog日志备份脚本

#!/bin/bash

dateDIR=$(date -d "yesterday" +"%y-%m-%d")
mkdir -p /data/backup/mysql/binlog/$dateDIR

##刷新缓存中的日志
mysqladmin -uroot -p123456 flush-logs

#7天前的时间
TIME=$(date "-d 7 day ago" +"%Y-%m-%d %H:%M:%S")

#24小时前的时间
StartTime=$(date "-d 1 day ago" +"%Y-%m-%d %H:%M:%S")

#删除7天前的2进制文件
mysql -uroot -p123456 -e "purge master logs before '${TIME}';"

#针对每个数据库
for db in $(mysql -uroot -p123456 -e "show databases" | grep -ve "Database" -ve "mysql" -ve "test" -ve "information_schema")
do
#针对所有的日志文件
for log in $(cat /data/mysql/3306/logs/binlog/mysql-bin.index)
do
#备份每个数据库24小时之前到现在时间的所有日志,写入到相应文件中
mysqlbinlog -uroot -p123456 -d $db --start-datetime="$StartTime" ${log}>>/data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR}
done
tar jcvf /data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR}.tar.bz2 /data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR} 2&>/dev/null
rm -rf /data/backup/mysql/binlog/$dateDIR/${db}_${dateDIR}
done
#删除30天以前的增量备份文件和目录
find /data/backup/mysql/binlog/* -mtime +29 -type d -exec rm -rf {} \;

 

你可能感兴趣的:(mysql,备份,日志,脚本,职场,休闲)