解决由于日志占满空间导致的MySQL无法启动问题
今天收到监控邮件说博客访问失败,打开页面一看,硕大的502 Bad Gateway,ping了一下VPS发现是通的,SSH连接上去看了下Nginx日志发现没问题,重启lnmp的时候发现Mysql起不来,问题源头基本找到,代码如下:
tail /usr/local/mysql/var/slyar.err
看了一下Mysql的错误日志,意外状况出现,如下所示:
Disk is full writing './mysql-bin.~rec~' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space)
神奇的情况,居然是因为磁盘满了无法写入日志导致Mysql起不来,代码如下:
- root@slyar#df
- Filesystem1K-blocksUsedAvailableUse%Mountedon
- /dev/sda1301668828775400100%/
果然啊,/var目录爆了,代码如下:
- root@slyar:/usr/local/mysql/var#ll--block-size=MB
- total504MB--phpfensi.com
- -rw-rw----1mysqlmysql26MBJul232012mysql-bin.000011
- -rw-rw----1mysqlmysql5MBJul262012mysql-bin.000012
- -rw-rw----1mysqlmysql27MBAug82012mysql-bin.000013
- -rw-rw----1mysqlmysql43MBAug232012mysql-bin.000014
- -rw-rw----1mysqlmysql270MBFeb917:05mysql-bin.000020
- -rw-rw----1mysqlmysql115MBApr1912:27mysql-bin.000021
- -rw-rw----1mysqlmysql1MBFeb1012:07mysql-bin.index
- -rw-rw----1mysqlmysql0MBApr1912:34mysql-bin.~rec~
基本上就是被这些玩意占满了,查了一下Mysql手册发现这些东西也没啥用,直接删除(此操作最好在Mysql服务停止时进行,因为当前日志使用的话无法删除,而且有可能导致一些其它问题,不过用mysql>reset master命令可以直接清空日志),代码如下:
root@slyar:/usr/local/mysql/var# rm -f mysql-bin.*
为了防止再次出现此类状况,直接关闭Mysql的log-bin日志功能,代码如下:
vim /etc/my.cnf
找到如下代码:
log-bin=mysql-bin
binlog_format=mixed
在前面加上#注释掉,:wq保存退出
最后代码如下:/etc/init.d/mysql restart 启动Mysql服务,一切正常.
热门评论