视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL二进制日志管理脚本
2020-11-09 10:28:20 责编:小采
文档

脚本原理是每小时对数据库进行flush生成新的二进制日志,将二进制日志备份至NFS,并压缩存放:

脚本原理是每小时对数据库进行flush生成新的二进制日志,将二进制日志备份至NFS,并压缩存放:

#!/bin/bash
#Purpose:管理mysql二进制日志,,每小时刷新二进制日志,并将日志复制到nfs服务器上,方便以后恢复和问题分析!
#Author:carl_zhang
#Date:2012-5-15

#some variables 一些参数
#定义数据库的相关信息
USERNAME=root
PASSWORD=zhang@123
HOSTIP=localhost
MYSQL=/usr/local/mysql/bin/mysql

#设置二进制日志的路径
BIN_LOG_DIR=/data/dbdata
#设置二进制日志备份的路径
BIN_LOG_BACKUP_DIR=/data/binlog_backup
#定义一个常量来跳过最后一个日志文件
COUNT=0
#定义一个日志文件
LOGFILE=/data/binlog_backup/binlog_backup.log
#找出二进制日志的名称前缀
BINLOG_PREFIX=`grep "log-bin=" /etc/my.cnf | awk -F'=' '{print $2}'`
#比较二进制日志文件列表和已备份的二进制文件列表
if [ ! -f "$BIN_LOG_BACKUP_DIR/backup.file" ];then
touch $BIN_LOG_BACKUP_DIR/backup.file
fi
#运行文件比较之前先执行一下flush logs
$MYSQL -u$USERNAME -p$PASSWORD -h$HOSTIP -e "flush logs"
FILE_LIST=`comm -23 $BIN_LOG_DIR/$BINLOG_PREFIX.index $BIN_LOG_BACKUP_DIR/backup.file`
#统计日志文件的个数
FILE_COUNT=`comm -23 $BIN_LOG_DIR/$BINLOG_PREFIX.index $BIN_LOG_BACKUP_DIR/backup.file|wc -l`

#程序正文
#开始备份二进制日志文件
for file in $FILE_LIST
do
BINLOG_NAME=`basename $file`
let COUNT=$COUNT+1
if [ $COUNT -eq $FILE_COUNT ];then
#跳过最新的那个二进制日志文件
echo "skip the lastest binlog file" >> $LOGFILE
else
cp $BIN_LOG_DIR/$BINLOG_NAME $BIN_LOG_BACKUP_DIR/
if [ $? -eq 0 ];then
echo "`date -d "today" +%Y-%m-%d-%H-%M-%S` $BINLOG_NAME backup success" >> $LOGFILE
else
echo "`date -d "today" +%Y-%m-%d-%H-%M-%S` $BINLOG_NAME backup faild, Please check it out" >> $LOGFILE
exit 5
fi
#对二进制日志进行压缩存放
gzip $BIN_LOG_BACKUP_DIR/$BINLOG_NAME
if [ $? -eq 0 ];then
echo "`date -d "today" +%Y-%m-%d-%H-%M-%S` $BINLOG_NAME gzip success" >> $LOGFILE
else
echo "`date -d "today" +%Y-%m-%d-%H-%M-%S` $BINLOG_NAME gzip faild, Please check it out" >> $LOGFILE
exit 5
fi
echo ./$BINLOG_NAME >> $BIN_LOG_BACKUP_DIR/backup.file
fi
done

下载本文
显示全文
专题