一早发现网站打不开,上阿里云后台看看监控没啥异常。
reboot
后显示数据库连不上,top
一看,
果然没见到常年稳居内存消耗榜首 mysqld
的身影。
好吧,检查 log,然后简直不敢相信自己的眼睛:
4801 [Warning] Disk is full writing './mysql-bin.000058' (Errcode: 28 - No space left on device). Waiting for someone to free space...
没空间?!不可能吧,50G 的盘上基本没放啥玩意儿啊。
不死心,df -h
检查:可用空间 0,已使用 100%,咳咳。
顺藤摸瓜来到 mysql/data
目录,好家伙:
一溜的 mysql-bin.0000xx
,每个足足 1GB,泪流满面。
上网一查,原来这玩意儿保存着完整的查询记录。
直接删除可能会影响到数据库的可靠性,最好使用 MySQL 自身的清除(PURGE)功能。
幸亏把数据库建在数据盘上了,要不是系统都可能跑不起来。
临时备份了些文件,好歹让 MySQL 跑起来了。
眼看着一个新的 mysql-bin
被创建了,并如癌细胞般飞速增长。
赶紧 mysql -u root -p
输密码登录 MySQL,执行清除操作:
PURGE BINARY LOGS BEFORE NOW();
为了避免查询记录的继续产生/限制大小,就需要编辑 /etc/my.cnf
,注释掉/修改:
#log-bin=mysql-bin #expire_logs_days = 5 #max_binlog_size = 1000M
【相关资料】
0、Spot the Lighthouse◃flickr(题图)
1、Large files in mysql\data directory◃stackexchange
2、Is it safe to delete mysql-bin files◃stackexchange
3、Why do the MySQL bin log files still exist after a purge or flush◃stackexchange
4、PURGE BINARY LOGS Syntax◃mysql
5、Binary Log Options and Variables◃mysql