活到老学到老  

记录遇到问题的点点滴滴。

Mysql的binlog太大太多占用大量磁盘的解决

6年前发布  · 1038 次阅读
  binlog 
通常出现这种问题都应该磁盘剩余空间过低,使用df –lh检查,发现磁盘空间已使用82%。再进一步通过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);