可以expire_logs_days小于1天在MySQL?

所以…昨天我收到了一个“事后电子邮件”,关于一个已经开始为我运行的服务之一的活动。 现在,数据库服务器正在遭受重创,在复制的二进制日志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部分,只是没有到期他们..