前一段时间系统mysql压力较大,产生大量binlog,大量的binlog删除后又担心后期出现问题难以调查,保存后又占用本身的空间存储。
每天产生的binlog可以多达5-6G。
因此考虑是否扩容机器达到目的?
经过运维同学 建议,可以压缩mysql binlog(以前担心压缩了mysqlbinlog后会导致mysql-bin.index文件报错,其中记录了相关index)。
为避免干扰mysql binlog自动删除机制
采取方案如下:
设置binlog自动删除日志时间(比如3天),此时存储假设一天5G大概会有15G
gzip昨天产生的binlog到新的文件,不删除binlog
binlog仍然交托给mysql管理删除
这样最小化侵入到mysql中。
尝试后发现
压缩了8天的binlog腾出了大约20G的空间。
在mysql配置中设置删除binlog时间
set global expire_logs_days = 3;
增加crontab管理压缩binlog
0 3 * * * find /data/mysqldb/mysql-bin.* -mtime 2 ! -name '*.gz' -exec tar -zcvf {}.gz {} \;
在增长保持恒定速度的情况下,每天增长的压缩后的binlog容量大约为不到200M。