所以…昨天我收到了一个“事后电子邮件”,关于一个已经开始为我运行的服务之一的活动。 现在,数据库服务器正在遭受重创,在复制的二进制日志logging中达到约300mb / min。 你可以想像,这是在以相当大的速度咀嚼空间。
二进制日志正常的7天到期是不是削减它。 我已经采取截断日志只是最后的4小时(我正在validation复制是最新的mk-heartbeat ):
PURGE MASTER LOGS BEFORE DATE_SUB( NOW(), INTERVAL 4 HOUR);
我只是每隔几个小时就从cron那里运行这个软件来应对风暴,但是这让我质疑expire_logs_days的最小值。 我还没有遇到一个小于1的值,但这并不意味着这是不可能的。 http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_expire_logs_days给出的types是数字,但不表示是否期待整数。
试验是晚上的顺序…
mysql> set @@ global.expire_logs_days = 0.75; 错误1232(42000):variables“expire_logs_days”的参数types不正确 mysql> set @@ global.expire_logs_days = .75; 错误1232(42000):variables“expire_logs_days”的参数types不正确 mysql> set @@ global.expire_logs_days = 3.4; 错误1232(42000):variables“expire_logs_days”的参数types不正确 mysql> set @@ global.expire_logs_days = 3/4; 错误1232(42000):variables“expire_logs_days”的参数types不正确 mysql> set @@ global.expire_logs_days = F; 错误1232(42000):variables“expire_logs_days”的参数types不正确 mysql> set @@ global.expire_logs_days = 0xF; 错误1232(42000):variables“expire_logs_days”的参数types不正确 mysql> set @@ global.expire_logs_days = 1; 查询OK,0行受影响(0.00秒)
其实,有一种方法来模仿它。
以下是将二进制日志清除为1小时的步骤。
步骤01)创build一个SQL脚本,它将删除时间戳早于一个小时的所有二进制日志:
echo "FLUSH LOGS;" > /usr/bin/purge.sql echo "PURGE BINARY LOGS BEFORE NOW() - INTERVAL 1 HOUR;" >> /usr/bin/purge.sql
步骤02)创build一个shell脚本( /usr/bin/purge.sh ),用purge.sql调用mysql
mysql -uroot -p... < /usr/bin/purge.sql
步骤03)使/usr/bin/purge.sh可执行
chmod +x /usr/bin/purge.sh
步骤04)将usr/bin/purge.sh添加到crontab中,以便每小时启动一次
0 * * * * /usr/bin/purge.sh
试一试 !!!
该页确实说范围是0-99 ..所以是的,这是一个整数。
0 =没有过期
你有我想知道0.5会做什么..我想它会忽略.5部分,只是没有到期他们..