关于自动删除mysql二进制日志expire_logs_days参数的理解

[ 2012-11-06 00:05:32 | 作者: admin ]
字号: | |
用的mysql版本是percona的5.0.75今天发现之前10天得binlog依然保存,当天得binlog数据不足1000M,很奇怪为什么没有自动删除呢 expire_logs_days已经设置为2了。后来查了查文档,mysqld对于日志清理的操作是要log flushing 时候才会发生。但什么情况下才会触发log flushing呢有以下几种情况:

1 重启mysql

2 命令行输入

flush Logs
mysqladmin flush-logs,
mysqladmin refresh,
mysqldump –flush-logs,
mysqldump –master-data

3 满足max_binlog_size

当以上几个条件满足后会触发log flushing操作,它会检查expire_logs_days这个动态参数(set global expire_logs_days=1) ,对于不满足日志保留时间的会删除掉,并修改mysql-bin.index这个文件索引,关于这个保留时间可以强调一下,他保留的日志是当前天+expire_logs_days=N,简单点说也就是今天如果是15号,expire_logs_days设置为1,那么binlog保留的就是14号以及15号的日志。

产生的问题:针对这种原理的话就会有可能产生我目前遇到的情况,也就是如下图11-4号和11-15号的binlog并存,因为15号的binlog并没有到达max_binlog_size的上限所以没有触发log flushing,所以只要手动运行flush logs就可以了,或者等到15号的日志到达上限设置的时候自动触发log flushing.

-rw-rw---- 1 mysql mysql 591 Nov 4 10:28 a01-vimg-test-youku.000004
-rw-rw---- 1 mysql mysql 1073741914 Nov 4 11:23 a01-vimg-test-youku.000005
-rw-rw---- 1 mysql mysql 1073742237 Nov 4 11:30 a01-vimg-test-youku.000006
-rw-rw---- 1 mysql mysql 1073742213 Nov 4 11:38 a01-vimg-test-youku.000007
-rw-rw---- 1 mysql mysql 1073742085 Nov 4 11:45 a01-vimg-test-youku.000008
........
-rw-rw---- 1 mysql mysql 1073741936 Nov 4 17:28 a01-vimg-test-youku.000050
-rw-rw---- 1 mysql mysql 950199177 Nov 15 10:20 a01-vimg-test-youku.000051$ mysql -e "show variables like 'expire_logs_days';"
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| expire_logs_days | 2 |
+------------------+-------+$ mysql -e "show variables like 'max_binlog_size';"
+-----------------+------------+
| Variable_name | Value |
+-----------------+------------+
| max_binlog_size | 1073741824 |
+-----------------+------------+

文章:http://www.mysqlinfo.com/2011/11/15/expire_logs_days%E8%AF%A5%E5%8F%82%E6%95%B0%E7%9A%84%E7%90%86%E8%A7%A3/
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1897

这篇日志没有评论。

此日志不可发表评论。