问题场景描述:
MySQL数据库服务器配置:200G,磁盘占用情况异常,使用率直增【当前使用率57%】。
【输入】查看mysql当前所有的数据库和索引大小
select table_schema, concat(truncate(sum(data_length)/1024/1024,2),' mb') as data_size,
concat(truncate(sum(index_length)/1024/1024,2),'mb') as index_size
from information_schema.tables
group by table_schema
order by data_length desc;
统计数据库空间占用1G左右,继续检索。
【输入】du -sh /var/lib/mysql
统计MySQL默认的数据文档存储目录文件磁盘占用50G,什么情况。
查看资料发现MySQL的binlog文件过多导致的。该日志文件记录了对数据库除了查询的所有操作。可以用来数据恢复、主从复制和判断数据库是否被攻击审计。
调整MySQL定时清理日志,查看binlog过期时间。
【输入】show variables like 'expire_logs_days';
发现过期时间为0,修改expire_logs_days值。可以在不重启mysql的情况下执行,设置过期时间为30天。
【输入】set global expire_logs_days = 30;
查看磁盘空间占用,嗯!!没生效。继续查。
设置之后不会立即清除,触发条件是:执行flush logs
【输入】flush logs;
再查看磁盘空间占用情况,/var/lib/mysql数据文档存储目录占用20G,解决了。