标签:
本文介绍了一次运维实践中relay-log长期无法自动删除的原因和解决过程
背景: 今天在运维一个mysql实例时,发现其数据目录下的relay-log 长期没有删除,已经堆积了几十个relay-log。 然而其他作为Slave服务器实例却没有这种情况。
通过收集到的信息,综合分析后发现relay-log无法自动删除和以下原因有关。
简而言之就是: 一个实例如果之前是Slave,而之后停用了(stop slave),且没有配置expire-logs-days的情况下,会出现relay-log堆积的情况。
顺带也和大家分享下MySQL 内部Logrotate的机制
max_binlog_size
,如果超过则自动生成一个binlog filemax_relay_log_size
如果超过则自动生成一个新的relay-log-filepurge-relay-log
在SQL Thread每执行完一个events时判断,如果该relay-log 已经不再需要则自动删除expire-logs-days
只在 实例启动时 和 flush logs 时判断,如果文件访问时间早于设定值,则purge file (同Binlog file) (updated: expire-logs-days和relaylog的purge没有关系) expire-logs-days
, 否则当我们的外部脚本因意外而停止时,还能有一层保障。因此建议当slave不再使用时,通过reset slave来取消relaylog,以免出现relay-log堆积的情况。
标签:
原文地址:http://www.cnblogs.com/hllnj2008/p/5209131.html