(2006) MySQL 服务器已经消失

Posted

技术标签:

【中文标题】(2006) MySQL 服务器已经消失【英文标题】:(2006) MySQL server has gone away 【发布时间】:2015-01-15 00:16:48 【问题描述】:

我已经阅读了很多线程以及有关此问题的 mysql 文档,但似乎没有任何建议有效。

这是我的.cnf

[客户] 端口 = 3306 套接字 = /var/run/mysqld/mysqld.sock [mysqld_safe] 套接字 = /var/run/mysqld/mysqld.sock 不错 = 0 [mysqld] 用户 = mysql pid 文件 = /var/run/mysqld/mysqld.pid 套接字 = /var/run/mysqld/mysqld.sock 端口 = 3306 basedir = /usr 数据目录 = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql 跳过外部锁定 默认存储引擎=INNODB 字符集服务器=utf8 整理服务器=utf8_bin 交互超时 = 2880000 等待超时 = 2880000 net_write_timeout = 6000 net_read_timeout = 6000 延迟插入超时 = 6000 key_buffer = 256M 键缓冲区大小 = 32M max_allowed_pa​​cket = 600M 线程堆栈 = 256K 线程缓存大小 = 8 最大连接数 = 500 线程缓存大小 = 50 打开文件限制 = 65535 表定义缓存 = 4096 表打开缓存 = 10240 查询缓存类型 = 0 query_cache_limit = 2M query_cache_size = 32M myisam-recover = 备份 innodb_buffer_pool_size = 384M innodb_additional_mem_pool_size = 20M innodb_log_file_size = 10M innodb_log_buffer_size = 64M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 180 log_error = /var/log/mysql/error.log expire_logs_days = 10 max_binlog_size = 100M [mysql转储] 快的 引用名称 max_allowed_pa​​cket = 64M [isamchk] key_buffer = 32M

此外,我在 MySQL CLI 中运行查询以确保我的设置保持不变,它们似乎是:

mysql> 选择@@global.wait_timeout,@@session.wait_timeout; +------------------------+-------------+ | @@global.wait_timeout | @@session.wait_timeout | +------------------------+-------------+ | 2880000 | 2880000 | +------------------------+-------------+ mysql> 选择@@global.max_allowed_pa​​cket,@@session.max_allowed_pa​​cket; +-----------------------------+------------------ ------------+ | @@global.max_allowed_pa​​cket | @@session.max_allowed_pa​​cket | +-----------------------------+------------------ ------------+ | 629145600 | 629145600 | +-----------------------------+------------------ ------------+

服务器环境:Ubuntu Server 14.04LTS

MySQL 版本:5.6

这是一个专用的 MySQL 服务器,上面没有其他应用程序。

我没有内存不足:

内存总量:32948824 kB 内存免费:31494136 kB 缓存:281624 kB 交换缓存:0 kB 交换总数:33550332 kB 无交换:33550332 kB

【问题讨论】:

mysql 服务器是在本地主机还是远程主机上运行?如果远程,网络连接可能会断断续续。 它在公司网络内部托管。我们的备份数据库在 Windows Server 2012 上运行,执行超时查询的脚本成功地从同一台机器执行到备份数据库服务器,所以这绝对不是网络连接问题,除非它是 Ubuntu 配置本身的问题。 【参考方案1】:

我终于能够解决这个问题,但绕过 MySQL Workbench 迁移工具并使用 mysqldup 生成用于恢复到服务器的数据库 .sql 文件。这是我所做的:

    从 MySQL 服务器中删除了所有超时的数据库 通过 mysqldump 从我们的备份数据库中导出所有数据 将该转储文件恢复到新的 MySQL 服务器(之前的 超时) 运行 mysql_upgrade,所有表都正常 执行查询:现在一切正常 有效

奇怪的是:mysqlcheck 和 mysql_upgrade 在数据库上运行时不知何故超时,返回状态 OK 并且没有发现任何错误。我不知道为什么,但我认为这是一个非常奇怪和烦人的问题,因为这正是 mysqlcheck 的用途。

无论如何,如果您遇到此问题,请尝试从较旧的备份(如果您有)恢复数据库,看看是否可行。

【讨论】:

以上是关于(2006) MySQL 服务器已经消失的主要内容,如果未能解决你的问题,请参考以下文章

#2006 - MySQL 服务器在恢复 mysql 转储时消失了 [重复]

2006 年:MySQL 服务器消失了

phpMyAdmin 中的 MySQL “#2006 - MySQL 服务器已消失”

错误 2006 (HY000): MySQL 服务器已消失

#2006 MySQL 服务器在 Wamp 中消失了错误

第 406 行的 MySQL 错误 2006 (HY000):MySQL 服务器已消失