VPS建站:Mysql数据库日志大量占用磁盘空间导致速度缓慢

2017-12-01发布在 WordPress建站688 次访问

故障记录,仅供参考!使用 Linode vps 完成建站并且使用时间超过一年以上的学员可以检查一下。

最近帮学员解答问题的时候发现有个学员用 Linode 建的网站,网站内容很多,有上百个产品也有不少 blog 文章(做内容营销的)。他反映,用了一年多了,网站的速度最近感觉明显很慢很慢。

重点检查了一下缓存插件,发现是正常的。但是 FQ 访问并操作的时候明显感觉到很慢。

最后发现是 Linode 的磁盘空间快要满了,硬盘空间少会会导致网站速度慢,如果空间已满,还会导致网站无法访问。

检查了一下原因,是因为以前安装 lnmp环境安装包的时候程序默认不关闭 Mysql 的日志文件,导致在 /usr/local/mysql/var/ 下生成了许多名为 mysql-bin.0000* 的日志文件,每一个日志文件的大小都有1G,时间久了会占用硬盘空间。因此我们需要清理这些文件。


首先,xshell 连接 Linode 后,

执行命令查看磁盘空间

df -h

接着会出现类似下面这样的信息:

[root@li1207-110 ~]# df -h
Filesystem      Size  Used  Avail Use%  Mounted on
/dev/sda        20G   15.5G  3.5G  80%  /
tmpfs           493M  192K   493M   1%  /dev/shm

这位学员用的是5美金方案的 Linode,SSD硬盘 20G 容量,已用了 15.5 G 以上。

我们用 XFTP 到 /usr/local/mysql/var/ 下看一下,确实有几个较大的名为 mysql-bin.0000* 的文件。如:mysql-bin.000015,mysql-bin.000016 等等。。


清理 MySQL 日志文件

执行:/usr/local/mysql/bin/mysql -u root -p

接着提示 Enter password:

输入数据库管理员密码(root password of Mysql Database),注意输入的时候是不显示输入状态的,字符不可见。所以你可以在记事本上先写好密码,然后复制,再鼠标右键粘贴进去,粘贴进去的时候也不显示,直接回车即可。

然后会提示:mysql>

此时复制并执行下面的命令,注意复制的时候要包含分号,粘贴,回车执行。

reset master;

执行完后会提示类似于:“Query OK, 234 rows affected (12.3 sec)”,说明已经成功。

再输入:quit  退出 mysql 命令模式。

此时在 XFTP 窗口中点击刷新按钮,可以看到 /usr/local/mysql/var/ 下的名为 mysql-bin.0000* 的日志文件已经清理掉。(注意其他的文件不要去手动删除)

我们再次执行 df -h 命令。

[root@li1207-110 ~]# df -h
Filesystem     Size   Used  Avail Use%  Mounted on
/dev/sda       20G    8G    10G   42%   /
tmpfs          493M   192K  493M  1%    /dev/shm

可以看到空余了不少磁盘空间。


定期自动清理MySQL日志

用 Xftp 连接打开 VPS 的根目录,找到根目录下的 etc 目录,在该目录下有个名为 my.cnf 的文件。这个文件即为 MySQL 数据库的配置( cnf=Configuration) 文件。

下载(或 vi 命令)用 notepad++ 修改编辑打开它,可以看到这一行:

expire_logs_days = 10

这是代表数据库日志文件过10天就失效并清理。如果你的网站流量很大(或者将来会流量很大),那么即使是 10天产生的日志文件也会很大。

因此我们可以把 10 改成 5。上传覆盖原 my.cnf 文件,然后重启 mysql。

service mysql restart

这样每过 5 天就会自动清理日志。


我们也可以彻底禁用 MySQL 日志。

彻底禁用MySQL日志

修改/etc/my.cnf 文件,找到

log-bin=mysql-bin
binlog_format=mixed

在这两行前面加上#,将其注释掉。上传覆盖原 my.cnf 文件,然后重启 mysql。

分享到微信朋友圈

LiaoSam
LiaoSam
外贸综合症患者

10条评论

发表我的评论

取消评论

邮箱白名单说明:最近料网自动提醒邮件经常会被一些邮件服务商拦截。为了您顺利并及时地收取留言被回复的提醒邮件,请在您邮箱中把料网 liaosam.com 加入白名单域名。

已读说明
设为私密评论
添加表情

Hi,您需要填写昵称和邮箱!

您的邮箱地址不会公开,仅仅用于收取回复。建议填写QQ邮箱,不宜填写工作邮箱。
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址 (没有就留空)
呃,评论有点多呢... 料网小秘书为您玩命加载中...
  1. #5
    可小橙

    删掉了15个G。。。哪里来的这么多垃圾啊
    但是找不到my.cnf….

    6天前回复
    • 可小橙

      @可小橙 sudo find / -name my.cnf
      用了这个命令,找到了好多my.cnf, 都是在mysql 下面的
      算了,不敢乱改,还是每个星期手动删除一次吧。。。

      6天前回复
      • LiaoSam
        Liaosam,外贸综合症患者。
        @可小橙 根目录 /etc/ 下的 my.cnf 文件。其他的不用管。
        6天前回复
  2. #4

    一言不发岂能证明我来过了?!

    1周前 (12-11)回复
  3. #3
    Keen Cheng

    直接rm bin可能会影响mysql数据,可以在注释log-bin之前用mysql -uroot -p登录mysql,执行reset master; 比较稳妥点。

    昨天删掉了14个G,挺爽的 哈哈

    2周前 (12-03)回复
    • LiaoSam
      Liaosam,外贸综合症患者。
      @Keen Cheng 谢谢建议!特地看了一下资料,reset master; 和 PURGE BINARY LOGS 都可以清理日志,前者简单点,直接清除所有日志,后者要写范围。我也删了8个G。
      2周前 (12-06)回复
  4. #2
    佰宝小筑

    SAM哥,反应个情况:使用 log-bin=mysql-bin 和 binlog_format=mixed 修改之后,页面出现乱码了 ,用原文件覆盖之后恢复。 我的是Linux 6.5系统 LNMP WP程序

    2周前 (12-03)回复
    • LiaoSam
      Liaosam,外贸综合症患者。
      @佰宝小筑 可以不禁用日志,看文章重新的更新。
      2周前 (12-06)回复
  5. #1
    CT

    问下料神,google cloud platform免费试用300美金 这个是不是VPS, 可以用它建站吗? 和Linode 有什么区别?

    2周前 (12-02)回复
    • LiaoSam
      Liaosam,外贸综合症患者。
      @CT 有一定的区别。侧重云服务平台,其实它更像是阿里云,相当于阿里云给你存了几百块代金券让你消费。比较实用的有:Google Compute Engine,Google Cloud Storage、Google Container Engine 这些,你可以用 Google Compute Engine 来建站搭梯。喜欢折腾的可以尝试,百度一堆文章教程。。
      2周前 (12-06)回复