事件经过
早上起来,发现小说网站打不开了,突然想起前一天,腾讯云给我发送了一条漏洞提示。
难道这么快就被人黑了?
这也不至于吧,那个网站每天的访问人数还不到一百。
登录后台一看,数据库服务器的硬盘被写满了,可用空间为0,难道我遇到了传说中的sql注入攻击?
然而百度了一下,sql注入并不是这个意思。
搞得我有点懵,看了下Web服务器的存储空间是正常的,问题肯定出在数据库上。
研究了一会儿没有办法,只有回档了,把数据库服务器恢复到了20天之前的备份状态,网站立刻恢复了正常。
MySQL惹的祸
虽然己经恢复了正常,但是观察了几个小时后发现,数据库服务器的己用空间依然以每小时几百MB的速度增加。
进入MySQL命令行,查看各个数据库的大小又是正常的。
照这样下去,不用多少天硬盘又得写满。
于是,我用了一个笨办法,用du -sh
这个命令一个一个文件夹的找,看到底是哪个文件夹占用了磁盘空间。
最后让我找到了/var/lib/mysql
这个文件夹下,有binlog.000001
-binlog.000013
这一系列的文件,每个文件的大小都是100MB。终于找到了原因。
mysql-binlog是MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句((除了数据查询语句)信息。可以使用mysqlbin命令查看二进制日志的内容。
最近搜索引擎在疯狂的爬我的小说站,我想这也是binlog被灌爆的原因了吧。
解决办法
首先想到的就是直接禁用binlog。
小破站有个备份就行了,用不到binlog这么高级的功能。而且在MySQL8以上的版本中,binlog是默认开启的。
查看binlog是否开启:
1 | mysql> show variables like 'log-bin'; |
关闭binlog
在my.cnf中的[mysqld]
中添加skip-log-bin
检查binlog是否关闭成功
经验教训
经过这次“事件”,给我的一个教训就是,换用新版的软件一定得谨慎,使用前要好好了解一下新版软件的新特性。发生问题后不要着急,细心捋一捋还是能够很容易的找到问题所在的。