【线上问题】linux服务器磁盘爆满导致服务失效

目录

        • 一、问题说明
        • 二、解决
          • 2.1 查文件夹占用大小
          • 2.2 修改mysql的配置
          • 2.3 删除已存在的binlog
        • 三、总结

一、问题说明
  • 1.登录服务的验证码刷不出来了,验证码是生成的图片,因为服务器磁盘满了,生成失败了
  • 2.因为服务都是docker启动的,清理了一遍docker日志,得到20个G的空间,过几天又满了
  • 3.服务器是测试服务器,运行的时间较长
二、解决
2.1 查文件夹占用大小
  • 1.使用命令
# 获取根目录下的各个文件夹的大小排序,获取前10条,并转换单位为G
sudo du -sh /* | sort -rh | head -n 10

【线上问题】linux服务器磁盘爆满导致服务失效_第1张图片

  • 2.发现/var占用较大,继续使用命令
# 查/var目录下的文件夹大小
sudo du -sh /var/* | sort -rh | head -n 10

【线上问题】linux服务器磁盘爆满导致服务失效_第2张图片

  • 3.继续查/var/lib
sudo du -sh /var/lib/* | sort -rh | head -n 10

【线上问题】linux服务器磁盘爆满导致服务失效_第3张图片

  • 4.继续查/var/lib/mysql
sudo du -sh /var/lib/mysql/* | sort -rh | head -n 10

【线上问题】linux服务器磁盘爆满导致服务失效_第4张图片

  • 5.可以看出是mysql的binlog日志过多,没有定时清理
2.2 修改mysql的配置
  • 1.找到mysql的安装位置
sudo whereis mysql
  • 2.切到mysql的安装目录的conf,修改my.cnf
sudo vim my.cnf
  • 3.修改内容
[mysqld]
expire_logs_days=30
  • 4.这里是30天过期
  • 5.重启mysql
# 这里是centos7,具体系统具体命令重启
sudo systemctl restart mysqld
2.3 删除已存在的binlog
  • 1.登录mysql
mysql -u root -p
# 输入密码
  • 2.进入mysql控制台后
# 执行sql脚本
SHOW BINARY LOGS;

【线上问题】linux服务器磁盘爆满导致服务失效_第5张图片

  • 3.删除某个index之前的日志
# 删除000070之前的日志
PURGE BINARY LOGS TO 'binlog.000070';

在这里插入图片描述

  • 4.再次SHOW BINARY LOGS;
    【线上问题】linux服务器磁盘爆满导致服务失效_第6张图片
  • 5.再查看磁盘占用大小
sudo du -sh /* | sort -rh | head -n 10

【线上问题】linux服务器磁盘爆满导致服务失效_第7张图片
在这里插入图片描述

  • 6.瞬间多了40个G
三、总结
  • 1.docker启动的服务要限制docker日志大小,不然也会刷爆
  • 2.这里的mysql不是docker启动的,安装mysql时要配置好定期清理binlog日志的时间,时间长了会爆炸

你可能感兴趣的:(线上问题,linux,mysql,服务器,linux,mysql)