Chinaunix

标题: mysql bin日志文件清除sh [打印本页]

作者: justinyun    时间: 2007-11-06 13:11
标题: mysql bin日志文件清除sh
#!/bin/sh
## 2007-11-6

DELLOG="/usr/local/logs/del-sqlbin.log.`date +%d`"
DELTMP="/usr/local/logs/del-sqlbin.tmp"
MAIL_ADDR="xxx@xxx.xx"
exec &>$DELLOG

DT=`date +'%Y-%m-%d %T'`
SINGLE=0
sleep 30

hostname
echo `date +'%Y-%m-%d %T'`
echo "EXEC>>"
echo "PURGE MASTER LOGS BEFORE '$DT';"
echo "PURGE MASTER LOGS BEFORE '$DT';" >$DELTMP
mysql -uroot -pxxx <$DELTMP

if [ $? = 0 ];then
        echo "Purge master logs sucess!"
else
        echo "Purge master logs failure!"
        SINGLE=1
fi
echo "--------------------------------"
echo

if [ $SINGLE = 1 ];then
        mail -s "Purge_master_logs_err" $MAIL_ADDR <$DELLOG
fi
作者: yejr    时间: 2007-11-09 22:14
不错,支持
作者: mysnopy    时间: 2007-11-15 12:41
能不能详细解释下?
作者: ypingyuan    时间: 2007-11-23 10:19
原帖由 mysnopy 于 2007-11-15 12:41 发表
能不能详细解释下?


MySQL 5.1 Reference Manual

12.6.1.1. PURGE MASTER LOGS Syntax

PURGE {MASTER | BINARY} LOGS TO 'log_name'
PURGE {MASTER | BINARY} LOGS BEFORE 'date'

Example:

PURGE MASTER LOGS TO 'mysql-bin.010';
PURGE MASTER LOGS BEFORE '2003-04-02 22:46:26';
作者: yueliangdao0608    时间: 2008-03-06 11:55
支持一下,好脚本!
作者: tiancongxin    时间: 2008-04-05 00:08
其实如果你对binlog要求不是太高的话,可以设置自动清除的,mysql有一个参数expire_logs_days ,即保留多长时间的binlog
set @expire_logs_days=xxx;
flush logs;
作者: cycker    时间: 2008-05-26 15:47
标题: 回复 #1 justinyun 的帖子
我一般是直接 找出近3天前的出来RM,不知道这样有没有什么不好。
作者: yueliangdao0608    时间: 2008-05-26 16:44
原帖由 cycker 于 2008-5-26 15:47 发表
我一般是直接 找出近3天前的出来RM,不知道这样有没有什么不好。

没有啥影响。
作者: blackbox    时间: 2008-05-29 11:49
如果是 master 服务器的话,不管是 justinyun 的清理脚本,或者 tianconxin 的 expire_logs_days 参数的设置,或是 cycker 的 find 前三天的 binlog 文件, 有可能会有问题。

假如 slave 发生错误,没有同步过去 master 的日志文件,这个错误也并没有被及时发现,但这时 master 上已经删除了日志文件,slave 就没有办法再继续同步了,只有重新 dump 一份 master 的数据过来。

再坏的假设:slave 发生错误后,master 的硬盘又坏了,不管 slave 起的什么作用,这时都会造成数据的丢失。
作者: aitilang    时间: 2008-05-29 15:07
清楚日志之前应该检查所有slave哈。。。
作者: andrefun    时间: 2008-07-08 19:39
我的意见是备份所有二进制日志文件.
作者: ProfessorTian    时间: 2008-07-08 23:22
至少应该先确定各个slave节点都同步到了master下哪一个binlog下之后,再决定应该删除多少binlog
作者: fouter    时间: 2008-07-09 12:54
标题: 回复 #1 justinyun 的帖子
01 06 * * *  find /data/mysql/ -type f -name "mysql-bin.000*" -atime +7 -exec rm -f {} \;
作者: strivers    时间: 2011-07-12 21:19
不错,支持
作者: freeterman    时间: 2011-11-29 18:17
云里雾里
作者: kerlion    时间: 2011-12-01 11:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: pandorabag    时间: 2015-01-23 17:56

支持一下,好脚本!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2