MySQL 服务器已消失 haProxy 不断出现错误
Posted
技术标签:
【中文标题】MySQL 服务器已消失 haProxy 不断出现错误【英文标题】:MySQL Server has gone away Error constantly appearing with haProxy 【发布时间】:2016-10-16 23:32:18 【问题描述】:我经常收到此消息。 到目前为止,我查看了几个解决方案,但没有找到任何解决此问题的方法。 但首先这是我的设置:
我使用 php7 环境,出于可扩展性原因,该环境被分成不同的元素。
1 nginx 网络服务器 使用 PHP7-FPM 和 haproxy 和 memcache 的 2-n 应用程序服务器 已配置库集群的 2-n 数据库服务器 1 个带有 PHP7-CLI 和 haproxy 的作业服务器 1 用于应用程序分发 (nfs) 和系统维护的登录服务器
登录服务器也是开发者的主要登录方式
我的问题是,我偶尔会收到以下消息:
警告:PDOStatement::execute(): mysql 服务器已消失
在任一应用服务器上重新启动 haproxy 后,它再次工作 3-10 页面视图。 但之后我再次收到相同的消息。
请帮我找出我的错误。
这是我的 haproxy 配置:
global
log 127.0.0.1 local0 notice
user haproxy
group haproxy
defaults
log global
retries 2
timeout connect 10000
timeout server 10000
timeout client 10000
listen mysql-cluster
log global
timeout connect 10000
timeout server 10000
timeout client 10000
bind 127.0.0.1:3306
mode tcp
option mysql-check user proxy
balance roundrobin
server db1 1.1.1.1:3306 check
server db2 1.1.1.2:3306 check
【问题讨论】:
这解决了我的问题,所以留下这个供参考。 serverfault.com/questions/730403/… 【参考方案1】:经过一段时间的研究和测试,我找到了问题的核心原因。
首先,代理用户的权限没有反映到第二台服务器上。 我在写入功能方面遇到了一些问题。 所以我在端口 3307 上添加了另一个连接,负责写入。 为了保持集群理念,我将主数据库设置在连接一上,如果其他数据库失败,我将其他数据库设置为备份。
我根据文章设置一切
http://severalnines.com/tutorials/mysql-load-balancing-haproxy-tutorial
感谢看到这篇文章时给我打电话的人的帮助:)
【讨论】:
什么?您的意思是根据您共享的链接通过 HAProxy 设置读/写拆分吗?还是……别的什么? 我有一个多主多服务器设置。所以在一台主机上(通过虚拟机)我有一个主机和一个从机运行。主人与其他人同步。为了进行一些负载平衡,我使用了 ha 代理,它知道其他主人和他们的负载。 ha 代理具有开放的端口 3306 和 3307(3306 用于只读从属连接)(3307 用于写操作)。所以 symfony 应用程序本身有两台服务器,它可以看到。端口 3306 和 3307 上的 haproxy。Symfony 不需要做任何负载平衡。一切都是通过haproxy完成的【参考方案2】:只需调整您的超时设置
服务器超时 10m 客户端超时 10m
【讨论】:
以上是关于MySQL 服务器已消失 haProxy 不断出现错误的主要内容,如果未能解决你的问题,请参考以下文章