备份MySQL的binlog文件,可以配合分库或全库的备份文件实现基于时间点的数据恢复.
在工作过程中,遇到两种情况:
1.不执行flush logs命令
缺点:对于不进行频繁写入和更新的业务,备份后,浪费磁盘空间.
优点:对于一天只生成一个binlog文件的业务,恢复数据比较容易,只需要解压一个binlog文件.
2.执行flush logs命令
缺点:在刷新和重新打开日志时,会潜在的破坏旧的日志条目.
优点:对于不进行频繁更新的业务员,会节省一点磁盘空间.
个人比较偏重不执行flush logs命令.
如果把binlog文件的大小设置为512M,通常情况下,压缩比率可以达到10:1,甚至更高.所以这点磁盘空间,基本不会有什么影响.
另附一个备份binlog的脚本代码
function backup_binlog(){
if [ -s $DIR_BACKUP/$HOSTNAME.mysql-bin ]; then
read POS < $DIR_BACKUP/$HOSTNAME.mysql-bin
cd $DIR_DATA
runstatus tar -zcvf $DIR_BACKUP/$TIME_YM/$TIME_DAY/$HOSTNAME.$POS.$TIME.tgz \
`gawk -F'/' '{print $NF}' $BINLOG_NAME.index |sed -n "/$POS/,//p"`
fi
# write last pos
gawk -F'/' '{print $NF}' $DIR_DATA/$BINLOG_NAME.index | tail -n 1 >$DIR_BACKUP/$HOSTNAME.mysql-bin
}
#$HOSTNAME.mysql-bin文件记录了上次备份的文件名字
#如果该文件不存在,则先生成.利用gawk
在工作过程中,遇到两种情况:
1.不执行flush logs命令
缺点:对于不进行频繁写入和更新的业务,备份后,浪费磁盘空间.
优点:对于一天只生成一个binlog文件的业务,恢复数据比较容易,只需要解压一个binlog文件.
2.执行flush logs命令
缺点:在刷新和重新打开日志时,会潜在的破坏旧的日志条目.
优点:对于不进行频繁更新的业务员,会节省一点磁盘空间.
个人比较偏重不执行flush logs命令.
如果把binlog文件的大小设置为512M,通常情况下,压缩比率可以达到10:1,甚至更高.所以这点磁盘空间,基本不会有什么影响.
另附一个备份binlog的脚本代码
function backup_binlog(){
if [ -s $DIR_BACKUP/$HOSTNAME.mysql-bin ]; then
read POS < $DIR_BACKUP/$HOSTNAME.mysql-bin
cd $DIR_DATA
runstatus tar -zcvf $DIR_BACKUP/$TIME_YM/$TIME_DAY/$HOSTNAME.$POS.$TIME.tgz \
`gawk -F'/' '{print $NF}' $BINLOG_NAME.index |sed -n "/$POS/,//p"`
fi
# write last pos
gawk -F'/' '{print $NF}' $DIR_DATA/$BINLOG_NAME.index | tail -n 1 >$DIR_BACKUP/$HOSTNAME.mysql-bin
}
#$HOSTNAME.mysql-bin文件记录了上次备份的文件名字
#如果该文件不存在,则先生成.利用gawk