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

1.查看

 df -h

Linux mysql(日志)占用大量磁盘空间问题原因及解决方法_第1张图片

du --max-depth=1 -h

Linux mysql(日志)占用大量磁盘空间问题原因及解决方法_第2张图片

cd mysql/
du -sh *

Linux mysql(日志)占用大量磁盘空间问题原因及解决方法_第3张图片

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

mysql -uroot -p

Linux mysql(日志)占用大量磁盘空间问题原因及解决方法_第4张图片

reset master;

 

参考:

解决方法


【方法一】手动删除


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


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


<1>查看

cd /mysql/data/
du -sh *
这里写图片描述

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



【2】删除日志文件


有两种情况


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

<1>删除日志

数据库中执行:
reset master;


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


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

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

show master status;

这里写图片描述

show slave status\G;
这里写图片描述


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

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

这里写图片描述

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


【3】reset master与purge binary logs区别

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



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


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

这里写图片描述


<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)

参考网址:https://blog.csdn.net/GX_1_11_real/article/details/82222376

 

你可能感兴趣的:(MY,SQL,linux系统)