清除与禁用 MySQL 查询记录

23655737169_27bc46595e_r

一早发现网站打不开,上阿里云后台看看监控没啥异常。
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%,咳咳。
顺藤摸瓜来到 /data 目录,好家伙:
一溜的 -bin.0000xx,每个足足 1GB,泪流满面。

上网一查,原来这玩意儿保存着完整的查询记录。
直接删除可能会影响到数据库的可靠性,最好使用 自身的清除(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

发表评论

邮箱地址不会被公开。 必填项已用*标注