我的问题在我的应用程序中导致了很长的“数据库时间”问题.
该应用程序运行良好,可以很好地从数据库读取/写入.问题是我有非常长的数据库响应时间,这绝对不是执行查询所花费的时间,这些都是简单的,并且是缓存的.
例如,我将随机获得响应时间几秒钟,有时则只需几毫秒.设置缓慢的查询日志,没有查询速度慢,它们都是简单的微小数据插入和大约80%的读取,整个数据库只有20MB,这是一个互联网论坛.
我确定问题出在套接字上,因为我不能在my.cnf的MysqLd部分指定套接字.如果我这样做,重新启动数据库时会出现错误:
ERROR 2002 (HY000): Can't connect to local MysqL server through socket '/var/lib/MysqL/MysqL.sock' (2)
例如,这是my.cnf的实时工作副本,删除了不相关的部分:
[MysqL] # CLIENT # port = 3306 socket = /var/lib/MysqL/MysqL.sock [MysqLd] # General # default-storage-engine = InnoDB # Database replication # server-id=1895149 log-bin=MysqL-bin log-error=MysqL-bin.err binlog_do_db=reefbase1 # MyISAM # key-buffer-size = 32M myisam-recover = FORCE,BACKUP
如果我将其更改为:
[MysqL] # CLIENT # port = 3306 socket = /var/lib/MysqL/MysqL.sock [MysqLd] port = 3306 socket = /var/lib/MysqL/MysqL.sock # General # default-storage-engine = InnoDB # Database replication # server-id=1895149 log-bin=MysqL-bin log-error=MysqL-bin.err binlog_do_db=reefbase1 # MyISAM # key-buffer-size = 32M myisam-recover = FORCE,BACKUP
这是我一遍又一遍地看到的,my.cnf要设置,我的服务器无法启动“无法连接”错误.
任何建议将非常感谢.
解决方法
这里要记住的第一点是,如果客户端配置为使用localhost,许多MysqL客户端(包括PHP)将默认为unix套接字样式通信.如果您的服务器未正确设置此套接字,则客户端可能正在尝试连接到套接字并失败.
其余部分来自我们在评论中的讨论.
在任何情况下,由于您的服务器未配置为创建套接字,并且客户端指向Ubuntu系统不常见的位置,我认为您应该首先尝试将其更改为指向pid和套接字的标准Debian / Ubuntu位置文件.哪个是/var/run/MysqLd/MysqLd.sock,或者最近是/run/MysqLd/MysqLd.sock.
另一个位置理论上应该可以工作,不过我猜测某些东西在权限或其他方面并不完全可写.