快速业务通道

mysql 设置 log 保留天数

作者 佚名技术 来源 数据库编程 浏览 发布时间 2012-03-21
现象:数据库除了查询以外的其他操作都失败,报错信息为:got error 28 from storage engin
原因:执行df命令,看到系统根目录(/)的剩余空间是0,使用率达到了100%,原来是系统没有任何空间了。
查找罪魁祸首:

1、查找下,数据主要“堆积”在哪里
cd /
du -m --max-depth=1 -k
看到/usr用掉了绝大多数的空间,继续深入进去
cd /usr
du -m --max-depth=1 -k
看到是local占了大头
cd local
du -m --max-depth=1 -k
这次是MySQL,果然没错,是mysql自己消耗掉了很大一部分磁盘空间,那到这个时候,猜也猜到,一定是mysql下的data占用了空间,一看,果然是。
其实这个时候,症结已经差不多找出来了,但是这个时候会出现两种情况,对于不同的情况,解决的办法也不相同:

2、在data目录,如果出现了很多mysql-bin.000****的文件,而且占用空间很大,那这里就要处理下。
mysql-bin.000***文件是mysql的操作日志文件,里面记录这这个数据库所有的数据操作(插入,更新,删除等)的记录,而且如果没有相关的管理,这些文件是不会自己删除的,只会越来越多,最后把磁盘给塞满。
其实,对于一般用途的mysql数据库,我们对数据恢复阿,历史操作查找阿什么都不会太在意,那么这些日志文件保留太长时间的,意义也不大,还不如删掉一些老的日志文件,来为系统留下大量的空间。
我们只要在配置文件/etc/my.cnf里添加下面这一句就行了:expire_logs_days=n就行了,“n”就是保留最近“几天”的日志信息,之前的就都删掉。

3、如果不是2的问题,那我们可以故技重施,看看data下面是哪个数据库的目录占用空间过大,找到这个数据库,cd进去,ll一下,可以看到这里存放着这个数据库的所有表信息,一般一个表由三个文件组成:
TABLENAME.frm: 表结构文件
TABLENAME.MYD: 表数据文件
TABLENAME.MYI:表结构和数据的索引文件
可以想到,如果一张表的记录很多,那么TABLENAME.MYD就一定会很大。
如果没有其他办法了,一定要删除这个表的数据,数据库才能恢复,那删除的步骤如下:
删除TABLENAME.MYD,再重建一个空的文件TABLENAME.MYD,数据库重启,登录到mysql,进入相应的数据库,执行delete from TABLENAME,这样就可以了。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号