首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

mysql expire_logs_days是如何生效的

2013-07-08 
mysql expire_logs_days是怎么生效的int MYSQL_BIN_LOG::purge_index_entry(THD *thd, ulonglong *decreas

mysql expire_logs_days是怎么生效的
int MYSQL_BIN_LOG::purge_index_entry(THD *thd, ulonglong *decrease_log_space, bool need_mutex){... for (;;) {... if (!my_delete(log_info.log_file_name, MYF(0))) { if (decrease_log_space) *decrease_log_space-= s.st_size; }...}

? ? ? ?my_delete调用unlink()删除binlog文件。至此,完成了自动清理binlog的过程。另外当mysql启动的时候,mysql也会执行purge_logs_before_date(purge_time)的过程(其它的操作,如果会引起binlog rotate,自然也会触发这个过程,如flush logs)。

? ? ? ?梳理一下整个过程,不难发现,在压力比较大的mysql上或生产环境,我们不应该启动这个参数(my.cnf中不显式设置该参数或设置expire_logs_days=0):mysql每天产生十几个或更多的binlog文件,启用这个参数后,一次清理这么多文件,必定会导致磁盘io被占满,mysql出现抖动或hang住。因此建议自己编写脚本,每次purge完一个binlog后,sleep几秒。

?

?

?

参考链接:

http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_expire_logs_days

http://dev.mysql.com/doc/refman/5.5/en/log-file-maintenance.html

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/

?

?

?

?

热点排行