微信搜索superit|邀请体验:大数据, 数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

mysql数据库binlog日志太大的清理方法

linux aide_941 39℃

mysql数据库binlog日志太大的清理方法

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

mysql数据库binlog日志太大的清理方法

现象:zabbix邮件报警,故障PROBLEM,服务 Free disk space isless than 20% on volume :xxx.xxx.xxx.xxx发生:/data故障!
分析过程及解决方案:通常出现这种问题都应该磁盘剩余空间过低,使用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);
———————
作者:slovyz
来源:CSDN
原文:https://blog.csdn.net/slovyz/article/details/50578339
版权声明:本文为博主原创文章,转载请附上博文链接!

——–

1.查看binlog日志

复制代码

mysql> show binary logs;



+------------------+------------+

| Log_name         | File_size  |

+------------------+------------+

| mysql-bin.000061 |      50624 |

| mysql-bin.000062 |       5159 |

| mysql-bin.000063 |        126 |

| mysql-bin.000064 |       3067 |

| mysql-bin.000065 |        503 |

| mysql-bin.000066 |        494 |

| mysql-bin.000067 |        107 |

| mysql-bin.000068 |       1433 |

| mysql-bin.000069 |       7077 |

| mysql-bin.000070 |        107 |

| mysql-bin.000071 |        804 |

| mysql-bin.000072 |       7642 |

| mysql-bin.000073 |       2198 |

| mysql-bin.000074 |     350139 |

| mysql-bin.000075 |        126 |

| mysql-bin.000076 |      51122 |

| mysql-bin.000077 | 1074279197 |

| mysql-bin.000078 | 1074435879 |

| mysql-bin.000079 |  928917122 |

+------------------+------------+

复制代码

2.删除某个日志文件之前的所有日志文件

复制代码

mysql> purge binary logs to 'mysql-bin.000079';  
mysql> show binary logs;



+------------------+-----------+

| Log_name         | File_size |

+------------------+-----------+

| mysql-bin.000079 | 928917122 |

+------------------+-----------+





mysql> reset master;   #重置所有的日志





复制代码

3.关闭mysql的binlog日志

复制代码

#log-bin=mysql-bin  在my.cnf里面注释掉binlog日志



重启mysql



service mysqld restart

转载请注明:SuperIT » mysql数据库binlog日志太大的清理方法

喜欢 (0)or分享 (0)