MySql ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

最开始的时候,技术反应 mysql 连接成功,但是调用超时。然后老板知道了这事选择直接重启(这真是一个错误的决定)。重启之后 mysql 就起不来了。接着我便被老板叫来解决问题。首先是运行看了看:

service mysql start
# 启动 mysql,报错 启动失败

mysql
# ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

网上说这个错误的文章有很多,但是最最重要的一点都是要求查看 mysql 的错误日志(错误日志目录由 mysql 配置文件指定)。有的人在日志里面发现时启动的时候某个文件打不开,去查看发现没有打开权限,修改权限之后就顺利启动了。不过博主碰到有点不同,他的错误日志是这样的:

... 
140422  7:00:17 [Warning] Disk is full writing './cobub/razor_login_log.MYD' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space) 
140422  7:00:17 [Warning] Retry in 60 secs. Message reprinted in 600 secs
...

原来是服务器磁盘满了。。坑爹么这!!

df -ah     # 查看了一下发现硬盘已经 100% 了
cd /
du -sh *   # 从跟目录开始查看大小情况

# 反复根据上述命令来寻找异常大小的文件夹

最后发现居然是 nginx 的日志文件过大,访问+错误日志加起来约 14G。

但是删掉之后空间还是没有释放出来,当时不清楚是什么原因 reboot 重启服务器之后,空间就腾了出来 mysql 启动的问题就解决。

事后发现应该是被删除的文件还在被进程(nginx)访问,所以删除后并不会立即腾出空间。在碰到这个问题可以通过 lsof 命令来查看文件的占用,对应上述的情况为重启 nginx 来解决。

总结:

  • 出现异常第一时间要去看错误日志 啊,混蛋!!
  • 访问日志要定时清理 !!
  • 要注意监视服务器状态(内存、硬盘、CPU…)

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s