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 不断出现错误的主要内容,如果未能解决你的问题,请参考以下文章

PHP站点中突然出现“MySQL服务器已消失”错误

Maria DB:MySQL 服务器已消失,错误日志中没有任何内容

解决“MySQL 服务器已消失”错误

安装迁移期间mysql服务器已消失错误(laravel)

Mysql2 错误 MySQL 服务器已消失

MySQL 服务器在 Drupal 7 中消失了