首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL套接字在my.cnf中的配置问题

MySQL套接字在my.cnf中的配置问题
EN

Server Fault用户
提问于 2014-03-18 13:35:00
回答 2查看 32.6K关注 0票数 4

我有一个问题,在我的应用程序中导致了很长的“数据库时间”。

DB为Percona MySQL 5.5.35。

该应用程序运行良好,可以从数据库读取/写入数据。问题是,我有非常长的DB响应时间,这绝对不是执行查询所花费的时间,这些查询都很简单,而且是缓存的。

例如,我将随机获得响应时间为几秒,而其他时间,它只需几毫秒。有缓慢的查询日志设置,没有查询是缓慢的,它们都是简单的微小数据插入和大约80%的读取,整个DB只有20 DB,这是一个互联网论坛。

我确信问题在于套接字,因为我不能在my.cnf的mysqld部分中指定套接字。如果这样做,则在重新启动数据库时会出现一个错误,即:

代码语言:javascript
复制
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

例如,下面是my.cnf的实时工作副本,删除了不相关的部分:

代码语言:javascript
复制
[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

注意在mysqld部分中没有指定端口和套接字?

如果我把这个改为:

代码语言:javascript
复制
[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,我的服务器无法从“无法连接”的错误开始。

如有任何建议,将不胜感激。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2014-03-18 21:23:03

这里要记住的第一点是,如果客户端配置为使用localhost,许多mysql客户端(包括php)将默认为unix套接字样式的通信。如果服务器没有正确设置此套接字,则客户端可能试图连接到套接字,但失败。

其余部分是从我们在评论中的讨论中总结出来的。

无论如何,由于您的服务器没有被配置为创建套接字,而且客户端被指向一个对Ubuntu系统来说不寻常的位置,我认为您应该尝试更改它,首先将pid和套接字文件指向标准Debian/Ubuntu位置。它是/var/run/mysqld/mysqld.sock,或者是最近的/run/mysqld/mysqld.sock

理论上来说,另一个位置应该可以工作,虽然我猜测某些东西并不是完全写到权限或其他东西上。

票数 4
EN

Server Fault用户

发布于 2015-10-19 19:03:31

我的问题有点不同,但是这个问题出现了。通过TCP连接而不是套接字解决了我的问题。它也能帮助其他人。

即在你的客户部分放:

代码语言:javascript
复制
host=127.0.0.1

和/或

代码语言:javascript
复制
protocol=tcp
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/582866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档