我试图通过运行这个命令来调整正在运行的mysql-server的性能:
mysqld_safe --key_buffer_size=64M --table_cache=256 --sort_buffer_size=4M --read_buffer_size=1M &
在这之后,我无法从运行mysql的服务器连接mysql。 我得到这个错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
不过,幸运的是我仍然可以远程连接到MySQL。 所以我所有的web服务器仍然可以访问mysql,并且运行没有任何问题。 因为这个虽然我不想尝试重新启动MySQL服务器,因为这可能会搞砸了一切。
现在我知道mysqld_safe正在启动mysql服务器,并且由于mysql服务器已经在运行了,我想这是两台运行和监听相同端口的mysql服务器的一些问题。
有没有办法解决这个问题,而无需重新启动初始的MySQL服务器?
更新 :这是什么PS XA | grep“mysql”说:
11672 ? S 0:00 /bin/sh /usr/bin/mysqld_safe 11780 ? Sl 175:04 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 11781 ? S 0:00 logger -t mysqld -p daemon.error 12432 pts/0 R+ 0:00 grep mysql
更新2 :试图重新启动。 停止工作正常,但开始失败。 令我惊讶的是,MySQL服务器仍然运行没有问题,但我真的不知道它停止了什么。
更新3 :我很确定这是现在的问题:当我第一次启动mysql时,它写入了/var/run/mysqld/mysqld.pid的processid和插口到/var/run/mysqld/mysqld.sock 。
然后当我运行mysqld_safe命令它删除这些文件。 现在我不能停止mysql服务器,因为停止命令需要这些文件。 有什么办法可以恢复这些文件? 我猜pid文件只是一个文件的进程ID? 我不想杀死这个进程,因为有很多的写入这个服务器,并杀死MySQL通常结束于损坏的数据库。
检查my.cnf
的bind-address
。 它应该是0.0.0.0
为了允许本地和远程连接。
用ps xa | grep mysql
检查 ps xa | grep mysql
运行多less个实例。
编辑
Apparanently:
Unix上的MySQL客户端可以通过两种不同的方式连接到mysqld服务器:使用Unix套接字文件连接文件系统中的文件(默认为/tmp/mysql.sock),或者使用TCP / IP连接通过端口号。 Unix套接字文件连接速度比TCP / IP更快,但只能在连接到同一台计算机上的服务器时使用。 如果不指定主机名或者指定特殊主机名localhost,则使用Unix套接字文件。
在这里检查一些有用的提示。
EDIT2
Can't connect to local MySQL server
的可能原因之一,这似乎是这里的问题:
有人已经删除了mysqld使用的Unix套接字文件(默认是/tmp/mysql.sock)。 例如,您可能有一个从/ tmp目录中删除旧文件的cron作业。 您始终可以运行mysqladmin版本来检查mysqladmin试图使用的Unix套接字文件是否真的存在。 在这种情况下的修复是更改cron作业不删除mysql.sock或将套接字文件放在其他地方。 请参见第B.5.4.5节“如何保护或更改MySQL Unix套接字文件”。
马丁,确保你在my.cnf中有socket = /var/run/mysqld/mysqld.sock
,我相信mysqld restart会解决你的问题,它应该重新创buildmysqld.sock,你应该可以在本地连接。
什么是在你的MySQL日志错误日志(不同的发行版有不同的位置)?
你的实例设置是什么? 连接到MySQL并运行命令
show global variabes
注意variablessocket
和log-error
编辑 :如果mysql正在运行,你可以连接到它,你可以closures它使用命令
mysqladmin shutdown
只要在连接的时候添加-h标志和你的主机名即可。 也可以尝试为MySQLd添加–socket =标志
mysql -h myserver.null.com -P 3306 -u bob -P dbname