我试图通过运行以下命令来优化正在运行的mysql服务器的性能:
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。因此,我所有的are服务器仍然可以访问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,以及到/var/run/mysqld/mysqld.sock的套接字。
然后,当我运行mysqld_safe命令时,它删除了这些文件。现在我不能停止mysql服务器,因为停止命令需要这些文件。有什么办法可以恢复这些文件吗?我想pid文件只是一个进程id的文件?我不想仅仅终止这个进程,因为这个服务器上有很多写操作,并且通常在损坏的数据库中杀死mysql。
发布于 2010-05-19 12:44:58
检查bind-address在您的my.cnf。它应该是0.0.0.0,以便允许本地和远程连接。
请与ps xa | grep mysql检查运行了多少个实例。
编辑
妄想:
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)。例如,您可能有一个cron作业,它从/tmp目录中删除旧文件。您可以始终运行mysqladmin版本来检查mysqladmin试图使用的Unix套接字文件是否真的存在。在这种情况下,修复方法是将cron作业更改为不删除mysql.sock,或者将套接字文件放在其他地方。参见B.5.4.5节,“如何保护或更改MySQL Unix文件”。
Martin,确保socket = /var/run/mysqld/mysqld.sock在my.cnf中,我相信mysqld重新启动将解决您的问题,它应该重新创建mysqld.sock,并且您应该能够在本地连接。
发布于 2010-05-19 19:46:55
mysql日志错误日志中有什么内容(不同的发行版有不同的位置)?
您的实例设置是什么?连接到mysql并运行命令
show global variabes注意变量socket和log-error
编辑:如果mysql正在运行,并且可以连接到它,则可以使用命令关闭它。
mysqladmin shutdown发布于 2010-05-23 08:20:48
连接时,只需添加带有主机名的-h标志,以查看它是否有效。还尝试将--套接字=标志添加到MySQLd中。
mysql -h myserver.null.com -P 3306 -u bob -P dbname
https://serverfault.com/questions/143373
复制相似问题