0
点赞
收藏
分享

微信扫一扫

Linux mysql(日志)占用大量磁盘空间问题原因及解决方法


1.查看

 df -h

Linux mysql(日志)占用大量磁盘空间问题原因及解决方法_log日志

du --max-depth=1 -h

Linux mysql(日志)占用大量磁盘空间问题原因及解决方法_mysql_02

cd mysql/
du -sh *

Linux mysql(日志)占用大量磁盘空间问题原因及解决方法_mysql_03

2.登录数据库/删除日志文件

mysql -uroot -p

Linux mysql(日志)占用大量磁盘空间问题原因及解决方法_log日志_04

reset master;

 

参考:

解决方法

【方法一】手动删除

【1】查看是否mysql的binlog日志是否过大

由于mysql的安装版本或安装方式,其binlog日志所在的位置或日志名称都不同,需根据自己的情况,查看日志大小。
(一般位置为/var/lib//mysql/或/usr/local/mysql/var/)

<1>查看

cd /mysql/data/

du -sh *

Linux mysql(日志)占用大量磁盘空间问题原因及解决方法_log日志_05

上图为本人实际binlog日志所在位置。由上图可知,的确是mysql的binlog日志过大,占用了磁盘空间。

【2】删除日志文件

有两种情况

情况1:该数据库未做主从

<1>删除日志

数据库中执行:
reset master;

如该数据库有主从也可使用此命令,但是易导致主从同步失败。

情况2:该数据库已做主从

<1>查看主库和每个从库正在使用的binlog是哪个文件

show master status;

Linux mysql(日志)占用大量磁盘空间问题原因及解决方法_mysql_06

show slave status\G;

Linux mysql(日志)占用大量磁盘空间问题原因及解决方法_数据库_07

<2>删除指定的日志序号之前或日期之前的日志索引中的所有二进制日志

purge master logs to’mysql-bin.000003’;
purge master logs before’2018-08-29 12:00:00’;

Linux mysql(日志)占用大量磁盘空间问题原因及解决方法_数据库_08

注意:
不可删除正在使用的binlog
时间和文件名不可写错(要依据自己的真实情况)

【3】reset master与purge binary logs区别

reset master:删除所有的binglog日志文件,并将日志索引文件清空,重新开始新的日志文件。
purge binary logs:基于某时间点的删除日志

【方法二】系统定期删除binlog文件

<1>查看当前的日志保存天数
show variables like ‘expire_logs_days’;

Linux mysql(日志)占用大量磁盘空间问题原因及解决方法_数据库_09

<2>设置只保留3天的binlog

(临时,重启mysql这个参数会失败)
set global expire_logs_days = 3;

(永久,my.cnf中添加,重启后生效)、
expire_logs_days = 3

注意:
默认值为0,表示“没有启用自动删除”
过期时间设置的要适当

【方法三】禁用binlog

如使用主从,禁止此操作

<1>将my.cnf中的下列注释掉

#log-bin=mysql-bin
#binlog_format=mixed

<2>重启mysql

systemctl restart mysql (centos 7)
/etc/init.d/mysql restart (centos 6)

 

举报

相关推荐

0 条评论