linux – my.cnf中的MySQL Socket配置问题

我的问题在我的应用程序中导致了很长的“数据库时间”问题.

数据库是Percona MySQL 5.5.35.

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

例如,我将随机获得响应时间几秒钟,有时则只需几毫秒.设置缓慢的查询日志,没有查询速度慢,它们都是简单的微小数据插入和大约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

注意MysqLd部分没有指定端口和套接字?

如果我将其更改为:

[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.

一个位置理论上应该可以工作,不过我猜测某些东西在权限或其他方面并不完全可写.

相关文章

Linux中的ARP防火墙主要用于防御ARP欺骗攻击,其效果取决于多...
insmod和modprobe加-f参数导致Invalid module format错误 这...
将ArchLinux安装到U盘 几个月前入门Arch的时候上网搜了不少安...
1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...