mysql - (2006) MySQL 服务器已经消失

标签 mysql linux timeout innodb config

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

这是我的.cnf


    [client]
    port            = 3306
    socket          = /var/run/mysqld/mysqld.sock

    [mysqld_safe]
    socket          = /var/run/mysqld/mysqld.sock
    nice            = 0

    [mysqld]
    user            = mysql
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    port            = 3306
    basedir         = /usr
    datadir         = /var/lib/mysql
    tmpdir          = /tmp
    lc-messages-dir = /usr/share/mysql

    skip-external-locking

    default-storage-engine=INNODB
    character-set-server=utf8
    collation-server=utf8_bin

    interactive_timeout     = 2880000
    wait_timeout            = 2880000
    net_write_timeout       = 6000
    net_read_timeout        = 6000
    delayed_insert_timeout  = 6000
    key_buffer              = 256M
    key-buffer-size         = 32M
    max_allowed_packet      = 600M
    thread_stack            = 256K
    thread_cache_size       = 8

    max-connections         = 500
    thread-cache-size       = 50
    open-files-limit        = 65535
    table-definition-cache  = 4096
    table-open-cache        = 10240
    query-cache-type        = 0
    query_cache_limit       = 2M
    query_cache_size        = 32M

    myisam-recover          = BACKUP

    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

    [mysqldump]
    quick
    quote-names
    max_allowed_packet      = 64M

    [isamchk]
    key_buffer              = 32M

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


    mysql> select @@global.wait_timeout, @@session.wait_timeout;
    +-----------------------+------------------------+
    | @@global.wait_timeout | @@session.wait_timeout |
    +-----------------------+------------------------+
    |               2880000 |                2880000 |
    +-----------------------+------------------------+


    mysql> select @@global.max_allowed_packet, @@session.max_allowed_packet;
    +-----------------------------+------------------------------+
    | @@global.max_allowed_packet | @@session.max_allowed_packet |
    +-----------------------------+------------------------------+
    |                   629145600 |                    629145600 |
    +-----------------------------+------------------------------+

服务器环境:Ubuntu Server 14.04LTS

MySQL版本:5.6

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

我没有内存不足:


    MemTotal:       32948824 kB
    MemFree:        31494136 kB
    Cached:           281624 kB
    SwapCached:            0 kB
    SwapTotal:      33550332 kB
    SwapFree:       33550332 kB

最佳答案

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

  1. 从超时的 MySQL 服务器中删除了所有数据库
  2. 通过 mysqldump 从备份数据库导出所有数据
  3. 将该转储文件恢复到新的 MySQL 服务器(之前的那个服务器) 超时)
  4. 运行 mysql_upgrade,所有表均正常执行查询:现在一切正常 作品
这是奇怪的事情:mysqlcheck 和 mysql_upgrade 在不知何故超时的数据库上运行时,返回状态 OK 并且没有发现任何错误。我不知道为什么,但我认为这是一个非常奇怪和烦人的问题,考虑到这正是 mysqlcheck 的用途。

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

关于mysql - (2006) MySQL 服务器已经消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26983647/

相关文章:

mysql - Eloquent ORM 根据 FK 选择其他字段

MySQL 使用 WHERE 子句选择具有最新可用日期的行

c - 在内核代码中查找函数的最佳方法

sql-server - 连接字符串中未遵守超时

mysql - 使用带有附加列的表中的 SELECT * 插入 INTO

linux - 如何使用Trisquel安装Bumblebee?

linux - 禁用 GCC 优化后不会发生 __kernel_vsyscall() 崩溃

Android - 如何处理超时

c++ - 设备驱动程序: Windows ReadFile function timeout

php - 使用 laravel eloquent 将左连接中的 null 值替换为 N/A