开发者社区> 问答> 正文

mysql的binlog太大太多占用大量磁盘

mysql的binlog太大太多占用大量磁盘

展开
收起
开发者说 2019-08-01 16:34:09 985 0
1 条回答
写回答
取消 提交回答
  • 现象:网站访问越来越慢,最后无法访问了,经过检查发现磁盘满了。仔细查询下来确认是由于mysql的binlog太多太大占用了空间。

    分析过程及解决方案:通常出现这种问题都应该登录服务器检查磁盘、内存和进程使用的情况,通过top、df –h和free –m来检查,发现磁盘空间满了。再进一步通过du –sh对可以的目录进行检查,发现是mysql的binlog占用空间过大。清理binlog的方法如下:

    1) 设置日志保留时长expire_logs_days自动删除

    查看当前日志保存天数:

    show variables like '%expire_logs_days%';
    
    

    这个默认是0,也就是logs不过期,可通过设置全局的参数,使他临时生效:

    set global expire_logs_days=7;
    
    

    设置了只保留7天BINLOG, 下次重启mysql这个参数默认会失败,所以需在my.cnf中设置

    expire_logs_days = 7
    
    

    2) 手动删除BINLOG (purge binary logs)

    用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件

    PURGE {MASTER | BINARY} LOGS TO 'log_name'
    PURGE {MASTER | BINARY} LOGS BEFORE 'date'
    
    

    例如:

    PURGE MASTER LOGS TO 'mysql-bin.010';
    PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00';
    PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);
    
    2019-08-02 15:11:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像