MySQL缺少InnoDB

时间:2012-05-15 18:27:29

标签: mysql innodb

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

我的my.cnf中没有提到InnoDB,除了一些解释默认启用InnoDB的评论,我不明白。在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)

4 个答案:

答案 0 :(得分:4)

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

  1. sudo /etc/init.d/mysql restart
  2. sudo tail -n 1000 /var/log/syslog
  3. (我假设你在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现在是否可用...
    7. 希望这有帮助!

答案 1 :(得分:1)

要做的第一件事是在MySQL提示符下运行SHOW ENGINES以确认Innodb是否被禁用。

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

答案 2 :(得分:0)

我在预装mysql 5.5的Debian 7服务器上遇到了这个问题。在SHOW ENGINES

之后没有InnoDB引擎

正如之前所提到的那样:

  1. sudo /etc/init.d/mysql restart
  2. sudo tail -n 1000 /var/log/syslog
  3. 我有这个:

    InnoDB:错误:5次尝试后,io_setup()因EAGAIN而失败。

    其他方面的解决方案:

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

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

答案 3 :(得分:0)

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

  1. 停止MYSQL
  2. 编辑my.cnf并增加:
  3. 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设置:

    6. 的[mysqld] innodb_force_recovery = 0

      1. 重启MySQL

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

      3. PS - 您可能想要检查导致此问题的原因,可能是在您的生产服务器上运行,或者重新启动导致您的日志文件损坏。您现在已经处于清醒状态,因此请浏览并确保所有其他方面看起来都不错,尤其是可用磁盘空间和异地备份。