【问题标题】:InnoDB missing from MySQLMySQL 中缺少 InnoDB
【发布时间】:2012-05-23 07:33:40
【问题描述】:

我不知道我在这里做了什么,但是我的 InnoDB 引擎似乎已经从我的 MySQL 服务器上消失了。我最近从 dotdeb 存储库升级了它,然后安装了mysql-server

在我的my.cnf 中没有提到 InnoDB,除了一些解释默认启用 InnoDB 的 cmets,我不明白。 SHOW ENGINES 中也没有提到 InnoDB。

这里有什么我遗漏的吗?

如果重要的话,我的 MySQL 服务器版本是:5.5.24-1~dotdeb.1 (Debian)

编辑:SHOW ENGINES

mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | DEFAULT | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.00 sec)

【问题讨论】:

  • 您的错误日志中有什么奇怪的地方吗?
  • 由于这是一个管理问题而不是编程问题,因此更适合 serverfault 或 dba.stackexchange.com。
  • 好的,我也去那些网站问问。
  • 那么,在任何 my.cnf 文件中没有 innodb=OFFskip-innodb 或通过命令行使用 --innodb=OFF--skip-innodb

标签: mysql innodb


【解决方案1】:

问题很可能是日志文件大小不匹配:mysql 期望 innodb 日志文件与配置文件中指定的大小完全相同。要检查这是否真的是问题,请执行以下操作:

  1. sudo /etc/init.d/mysql restart
  2. sudo tail -n 1000 /var/log/syslog

(我假设您使用的是 Debian)

如果您看到那里报告了一些关于 innodb 和日志文件大小的错误(抱歉,我不记得该消息的确切措辞),那么修复很简单:

  1. 找到日志文件(可能是/var/lib/mysql/ib_logfile0/var/lib/mysql/ib_logfile1
  2. 停止mysql服务器
  3. 重命名日志文件:sudo mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0.bak 等。
  4. 启动mysql服务器
  5. 检查/var/log/syslog 错误是否不再发生
  6. 连接 mysql 并通过SHOW ENGINES; 检查 InnoDB 现在是否可用...

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    首先要做的是在 MySQL 提示符下运行 SHOW ENGINES 以确认 Innodb 是否已禁用。

    如果是,请检查 MySQL 服务器的错误日志。它将详细说明 InnoDB 被禁用的原因。 MySQL 在启动时可能会禁用 InnoDB 有几个原因。例如,如果 my.cnf 中指定的 innodb 日志文件大小与磁盘上现有日志文件的大小不匹配。

    【讨论】:

    • 你这是什么意思?请运行 SHOW ENGINES 并将结果粘贴到您的问题中。
    • 我的意思是 InnoDB 不存在。我已将它们粘贴在问题中。
    【解决方案3】:

    我在预装了 mysql 5.5 的 Debian 7 服务器上遇到了这个问题。 SHOW ENGINES之后没有InnoDB引擎

    正如 severin 之前提到的那样运行这个:

    1. sudo /etc/init.d/mysql restart
    2. sudo tail -n 1000 /var/log/syslog

    我有这个:

    InnoDB:错误:io_setup() 在 5 次尝试后使用 EAGAIN 失败。

    其他行的解决方案:

    InnoDB:您可以通过在 my.cnf 中设置 innodb_use_native_aio = 0 来禁用 Linux Native AIO

    添加innodb_use_native_aio = 0到my.cnf后InnodDB出现在SHOW ENGINES

    【讨论】:

      【解决方案4】:

      检查是否有足够的磁盘空间以及 mysql.sock 的存储位置。

      1. 停止 MYSQL
      2. 编辑my.cnf并增加:

      innodb_buffer_pool_size=100M (May vary per case)

      1. 添加:

        [mysqld] innodb_force_recovery = 1

      2. 执行以下操作

        mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0.bak

        mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/ib_logfile1.bak

      3. 启动 MySQL 并进行备份以防万一。

      4. 登录到 mysql 并:show engines; - 检查是否列出了 InnoDB 并且 SUPPORT = YES。

      5. 如果在 6 点之前一切正常,退出并编辑 my.cnf 将其设置为:

      [mysqld] innodb_force_recovery = 0

      1. 重启 MySQL

      2. 访问您的网站,检查是否一切正常,祝您好运!

      PS - 您可能需要检查导致此问题的原因,可能是在您的生产服务器上工作,或者重新启动导致您的日志文件损坏。你现在很清楚,所以环顾四周,确保一切正常,尤其是可用磁盘空间和异地备份。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-12
        • 1970-01-01
        • 2013-03-04
        • 2020-04-07
        • 2020-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多