0

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

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

我在这里缺少什么吗?

如果重要的话,我的 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

4 回答 4

4

问题很可能是日志文件大小不匹配: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 现在是否可用...

希望这可以帮助!

于 2012-07-02T14:18:10.960 回答
1

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

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

于 2012-05-15T18:31:50.903 回答
0

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

正如 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

于 2014-03-14T12:31:43.003 回答
0

检查磁盘上是否有足够的空间以及 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 - 您可能想要检查导致此问题的原因,可能是在您的生产服务器上工作,或者重新启动导致您的日志文件损坏。你现在很清楚,所以环顾四周,确保其他一切看起来都很好,尤其是可用磁盘空间和异地备份。

于 2015-10-19T11:23:26.227 回答