西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > 开发教程 > mysql教程 >

MySQL的binlog过大导致磁盘报警

时间:2016-09-25 22:21来源:未知 作者:好模板 点击:
在启用MySQL的主从复制之后,发现在Master上的MySQL磁盘占用迅速上升导致磁盘报警(主要是mysql-bin.000xyz文件,也就是俗称的binlog文件): $ sudodu -sh /var/lib/mysql/* | sort -hr3.3G /var/lib/mysql/

在启用MySQL的主从复制之后,发现在Master上的MySQL磁盘占用迅速上升导致磁盘报警(主要是mysql-bin.000xyz文件,也就是俗称的binlog文件):

$ sudodu -sh /var/lib/mysql/* | sort -hr
3.3G /var/lib/mysql/ibdata1
1.1G /var/lib/mysql/mysql-bin.000001
1.1G /var/lib/mysql/mysql-bin.000002
...

参考解答:

可能的原因:

原因一:

启用了MySQL的binlog记录(在配置文件中设置了 log-bin=mysql-bin )

原因二:

将binlog_format设置为了mixed或row(默认的格式为statement):

binlog_format = mixed
或
binlog_format = row

解决办法:

0.在不需要binlog的情况下,可以通过注释「log-bin=mysql-bin」这一行来关闭该功能;

1.修改 binlog_format = statement (占用空间相对 row 和 mixed 来说会比较小),但是对于某些SQL来说可能就不支持,需要改SQL;

2. 临时删除部分binlog

mysql> PURGEBINARYLOGSTO 'mysql-bin.000039';
或
mysql> PURGEBINARYLOGSBEFORE '2016-09-20 22:46:26';

3.在配置文件my.cnf中 设置 binlog 定期删除 选项(修改后需要重启MySQL)

expire_logs_days = 2

4. 修改MySQL的数据目录

将MySQL的数据目录修改至一个有更大空间的磁盘上,并设置 expire_logs_days 选项,避免磁盘报警。

(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容