mysql.sock问题

kapil 2009-06-24 08:29:10
我的服务器经常会出现
Can't connect to local MySQL server through socket '/tmp/mysql.sock(11)
这个现象!

查看了系统进程,mysql已经启动,/tmp/mysql.sock也已经存在,netstat -an发现有使用mysql.sock的连接,但是也就几十个而已,kill掉所有mysql进程之后,重新启动上述情况就消失,但是过不了几天又会出现。

因为网站访问的人数很少,平时每天也就能有个100左右的PV,所以摸不清楚是哪里的问题~~~~

还有个问题:

为什么我的mysql可以用/etc/init.d/mysqld start启动,但是不能用/etc/init.d/mysqld stop停止?一执行停止的命令就无反应,出现好多...,每次重新启动mysql都必须先kill -9 掉所有mysql进程,痛苦ing....


请大家集思广益,帮我想想该如何解决上述问题?

-------------
附上服务器配置
双至强
2G内存
73G硬盘

php5
mysql5
apache2

所有这些都是编译安装

大概就这些了
...全文
2963 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttxslyj 2012-10-12
  • 打赏
  • 举报
回复
我也遇到该问题,/tmp/mysql.sock文件无缘无故丢失,但查询mysqld运行状态,该服务状态正在运行中。。。。非要重启mysqld服务才能回复/tmp/mysql.sock文件。
niu001007 2009-07-07
  • 打赏
  • 举报
回复
楼主如何解决的啊 我也遇到同样的问题
code_killer 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 kapil 的回复:]
感谢你的提示!

记得在装系统的时候机房的人好像装过一次MYSQL,后来我自己编译了一个mysql

我也换过tcp连接方式,也是没过一天mysql就崩溃了,按理说dicuzz论坛也没那么差劲吧,我写的那几个小程序完全没可能把mysql弄崩溃呀
[/Quote]


问题解决了么?
看来是两次重装mysql引起的,比如你的mysql启动脚本是否用的mysql源码中自带的?如果是用的你编译mysql之前的,就可能出一些莫名其妙问题。
kapil 2009-06-29
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 code_killer 的回复:]
引用楼主 kapil 的帖子:
我的服务器经常会出现
Can't connect to local MySQL server through socket '/tmp/mysql.sock(11)
这个现象!



禁用sock,强制本机客户端使用TCP连接,看能不能解决问题。


引用楼主 kapil 的帖子:
还有个问题:

为什么我的mysql可以用/etc/init.d/mysqld start启动,但是不能用/etc/init.d/mysqld stop停止?一执行停止的命令就无反应,出现好多...,每次重新启动mysql都必须先kill -…
[/Quote]

感谢你的提示!

记得在装系统的时候机房的人好像装过一次MYSQL,后来我自己编译了一个mysql

我也换过tcp连接方式,也是没过一天mysql就崩溃了,按理说dicuzz论坛也没那么差劲吧,我写的那几个小程序完全没可能把mysql弄崩溃呀
code_killer 2009-06-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 kapil 的帖子:]
我的服务器经常会出现
Can't connect to local MySQL server through socket '/tmp/mysql.sock(11)
这个现象!
[/Quote]


禁用sock,强制本机客户端使用TCP连接,看能不能解决问题。


[Quote=引用楼主 kapil 的帖子:]
还有个问题:

为什么我的mysql可以用/etc/init.d/mysqld start启动,但是不能用/etc/init.d/mysqld stop停止?一执行停止的命令就无反应,出现好多...,每次重新启动mysql都必须先kill -9 掉所有mysql进程,痛苦ing....
[/Quote]

楼主的启动脚本(/etc/init.d/mysqld)是不是后来安装上去的? 或者后来修改过?
如果mysql server是操作系统自带的,应该不会出现这种现象。
kapil 2009-06-29
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 ACMAIN_CHM 的回复:]
你的环境和应用是什么?PHP?

这样建议你检查一下你同一架服务器上的应用程序是不是没释放连接。
打开普通日志功能,看一下连接情况。
[/Quote]

服务器是php+apache+mysql

所有的程序都人工释放connection,现在服务器上跑了一套discuzz论坛代码和一个非常小的代码(基本上没几个人访问)。

打开了普通日志和慢查询日志,什么都看不到,慢查询日志设置的1秒,日志中没有任何慢记录,普通的日志也看不到任何蛛丝马迹,都是些sql语句。

现在基本上天天都出现这样的情况,一旦出现情况在shell下也连不上MYSQL,即使是TCP的方式也没反应~~

我现在开始怀疑是discuzz论坛的问题了~~,唉~~

头大~~

大浩船长 2009-06-27
  • 打赏
  • 举报
回复
Can't connect to local MySQL server through socket '/tmp/mysql.sock

mysql.sock文件损坏或是位置不正确
cdshrewd 2009-06-27
  • 打赏
  • 举报
回复
个人觉得应该是/etc/rc.d/init.d/mysql里面的socket位置是错误的,可能 使用了默认的socket建议检查一下mysqld_safe 和mysql里面的socket指向是否一致
kapil 2009-06-26
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 ACMAIN_CHM 的回复:]
感觉上应该是你的MYSQLD进程在网络部分有什么问题,不响应连接请求
1。是通讯本身有问题。下次直接试 mysqladmin -h localhost --port=3306 version,这个是走TCP的,而默认是走SOCKET的。

2。MYSQLD进程问题。

关键是找到如何再现问题的方法。
[/Quote]

又出现问题了,执行mysqladmin -h localhost --port=3306 version之后,显示如下:
/usr/local/mysql/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (11)'
Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!

查看进程发现mysql依然运行,netstat -an之后发现有不少mysql.sock,是因为没释放的缘故吗?
ACMAIN_CHM 2009-06-26
  • 打赏
  • 举报
回复

你的环境和应用是什么?PHP?

这样建议你检查一下你同一架服务器上的应用程序是不是没释放连接。
打开普通日志功能,看一下连接情况。
kapil 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ACMAIN_CHM 的回复:]
一,能是你的DNS解析问题,如果日志中没有任何记录,说明问题很可能在CLIENT本身,即mysql命令时根本没找到正确的主机。

二,如果是负载或并发连接数超上限,则应该会在错误日志中出现。

但你说,重启一下mysqld就好了,这样似乎也不象是第一种情况。


为什么我的mysql可以用/etc/init.d/mysqld start启动,但是不能用/etc/init.d/mysqld stop停止?一执行停止的命令就无反应,出现好多...,每次重新启动mysql都必须先…
[/Quote]

感谢你的回复!

不过还是没解决我的问题,能把第一种情况详细说说吗?啊出现/tmp/mysql.sock错误时,我在服务器上用命令行登录也不行,输入密码之后就没反应了~~

我之前 mysql启动都是直接在bin/mysqld_safe &
这样启动的,请问这几种启动方式的差别~~

谢谢
ACMAIN_CHM 2009-06-24
  • 打赏
  • 举报
回复

一,能是你的DNS解析问题,如果日志中没有任何记录,说明问题很可能在CLIENT本身,即mysql命令时根本没找到正确的主机。

二,如果是负载或并发连接数超上限,则应该会在错误日志中出现。

但你说,重启一下mysqld就好了,这样似乎也不象是第一种情况。



为什么我的mysql可以用/etc/init.d/mysqld start启动,但是不能用/etc/init.d/mysqld stop停止?一执行停止的命令就无反应,出现好多...,每次重新启动mysql都必须先kill -9 掉所有mysql进程,痛苦ing....

启动一般是 linux start mysql
kapil 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ACMAIN_CHM 的回复:]
在日志中检查一下你出问题时候的情况。
[/Quote]

我也看了,日志文件不大,记录的都是我kill掉mysql进程的记录,没有任何关于Can't connect to local MySQL server through socket '/tmp/mysql.sock(11) 的记录

昨天下午发生一次这样的情况,然后今天凌晨又发生一次,我在日志中看不到任何有关的情况,真是奇怪~~

按照大家的经验,这样的情况一般都是什么引起的?

负载?
程序?
还是配置或是编译?
wwwwb 2009-06-24
  • 打赏
  • 举报
回复
你将PORT这句去掉试试
kapil 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wwwwb 的回复:]
你不是说 本地连接不上 吗?怎么又可以连接了?
[/Quote]

在出现提示“Can't connect to local MySQL server through socket '/tmp/mysql.sock(11) ”的时候,mysql是启动着的,但是本地连接不上,重启之后能连接

我在[mysql]下添加socket = /tmp/mysql.sock并重启mysql之后,本地反而连不上
ACMAIN_CHM 2009-06-24
  • 打赏
  • 举报
回复

在日志中检查一下你出问题时候的情况。
wwwwb 2009-06-24
  • 打赏
  • 举报
回复
你不是说 本地连接不上 吗?怎么又可以连接了?
kapil 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 WWWWA 的回复:]
增加
[mysql]
socket=/tmp/mysql.sock
试试
[/Quote]

呵呵,能告诉为什么要加这个吗?

按照你说的加到my.cnf中之后,mysql重启之后不能连接,删除这个之后mysql才可以连接~~~
WWWWA 2009-06-24
  • 打赏
  • 举报
回复
增加
[mysql]
  socket=/tmp/mysql.sock
试试
kapil 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 WWWWA 的回复:]
我的服务器经常会出现
Can't connect to local MySQL server through socket '/tmp/mysql.sock(11)

能否连接上MYSQL?本机能否连接?看看ERR日志
[/Quote]

虽然能看到有mysql进程,但是在本地连接不上, 输入密码之后就没有任何反应了
加载更多回复(7)

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧