mysql占用大量磁盘空间问题原因及解决方法

运维日常的FAQ 同时被 2 个专栏收录
122 篇文章 3 订阅
33 篇文章 0 订阅

前言


我们使用mysql或者是其他的数据的时候总是会遇到数据库占用大量磁盘空间,导致磁盘空间不足,从而导致其他问题(例如:数据库重启后无法启动;数据库无法写入数据等)。
要解决这一个问题,方法就是对数据库的某些不必要的文件进行删除。在mysql数据库中占用大量磁盘空间的一般是binlog日志,因为它里面记录着数据库中数据的变动,所以它会随着时间的积累不断的变大,其存在的意义在于便于以后根据日志对数据的基于时间或位置的恢复和报错处理。

下面介绍的就是解决mysql数据库占用大量磁盘空间的解决方法。



解决方法


【方法一】手动删除


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

  • 1
    点赞
  • 0
    评论
  • 11
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值