一、故障描述
今天早上监控平台邮件通知生产某业务系统的MySQL数据库存储空间达到了90%,赶紧爬起来远程连上数据库主机,发现Master双主MySQL数据库10.5.11.105、和10.5.11.106数据目录/var/lib/mysql空间使用率达到了97%和96%。
二、问题分析过程
首先查询确认数据库主从关系
登录10.5.11.105和10.5.11.106数据库,执行语句:show slave status\G; 查看。
说明10.5.11.106数据库master-bin.000779之前的binlog是可以清理的。
执行语句:show slave hosts \G 查看server id。
说明Server_id:33333是10.5.11.105的从库。
执行语句:show variables like ‘server_id’可以确认。
三、查询binlog自动清理是否开启
执行如下语句show variables like 'expire_logs_days';
查看参数发现binlog自动清理功能没有开启。
四、查看具体的binlog文件
执行语句:show binary logs;
可以看到有大量的binlog文件。
五、查看binlog具体的存放路径
执行语句:show variables like '%log_bin_basename%'; 查看。
六、问题的根本原因
经过排查,我们发现问题的根本原因在于没有开启binlog自动清理功能,导致有大量的binlog进行积压所致。
七、处理问题
清理binlog文件。通过确认主从应用最新的binlog来清理binlog,使用如下命令,清理的时候可以多留几个binlog,注意不要手动rm binlog文件。
Purge binary logs to_’binlog文件名’;来清理binlog日志。
开启自动清理binlog日志功能(主从库都需执行)
执行语句:
set global expire_logs_days=10;
并在/etc/my.cnf的配置文件中增加如下配置:
expire_logs_days=10
注意:binlog日志过期时间可根据自己公司的要求自定义,我这里设置的是10天!