解决由于mysql日志文件占用磁盘空间过大引起的Nginx 502 Bad Gateway问题

在对一个网站的例行检查中发现网站打不开了,浏览器显示502 Bad Gateway。我的vps安装的是lnmp,首先用指令lnmp status 检查了一下nginx,php-fpm,mysql的状态,结果发现一切正常。根据经验,我估计是磁盘空间不足,马上使用指令 df -hl 检查磁盘的使用情况:

果然是磁盘空间不足,到底是什么文件这么大,塞满了整个硬盘?我首先想到会不会是nginx的日志文件,结果发现唯一的一个虚拟主机没有启用日志文件:

access_log off;

那很有可能是mysql的日志问题过大。首先来检查一下mysql日志文件的存放位置

mysql -u root -p

登录mysql数据库

执行以下指令

 

show variables like "slow_query_log_file";

show variables like "log_error";

mysql>show variables like 'log_%' ;

查到有两个日志文件,路径是

/usr/local/mysql/var/sunhan-slow.log

/usr/local/mysql/var/sunhan.err

看来主要的日志文件在/usr/local/mysql/var/这个目录下

执行以下指令来查看文件的大小

ls -alh /usr/local/mysql/var/

结果如下:

 

每个1.1G,有20个,难怪这么快就把硬盘塞满了。mysql数据库才几百M,为什么日志文件这么大呢?到底有什么用?

主要有两个作用

  1. 数据恢复
  2. 主从服务器之间同步数据

如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失。

主服务器上所有的操作都在记录日志中,从服务器可以根据该日志来进行,以确保两个同步。

日志会记录哪些东西呢?基本上所有和数据库有关的操作都有记录在案。比如,update一个表,delete一条记录等。即使没有和该指令相匹配的数据,这条指令也会记录到mysql的操作日志中。另外,每条指令执行的时间,也会被记灵。我这个vps上就放了一个个人博客,根本用不上这些,没有什么实际用途,还不如关掉,以免老是要清除日志。

清除日志的指令是:

reset master;

出错了,原来我为了使网站尽快恢复,已经改了/etc/my.cnf文件,把日志文件关掉了。现在先打开日志

vi /etc/my.cnf

把log-bin=mysql-bin和binlog_format=mixed 前面的#去掉

重启一下mysql,再次登录mysql

mysql -u root -p

输入清除日志的指令

reset master;

问题得到解决

查看一下磁盘占用情况

 

现在可以编辑/etc/my.cnf,把把log-bin=mysql-bin和binlog_format=mixed注释掉,重启一下mysql,问题就解决了。另外,日志文件也可以直接使用rm指令删除,如果文件比较多,就稍微麻烦点。

写完这篇博客,吓得我赶紧看了下本站的mysql日志。还好,日志文件不大,硬盘还有较大空间。

转载记得给个链接:VPS大玩家 » 解决由于mysql日志文件占用磁盘空间过大引起的Nginx 502 Bad Gateway问题

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏