InnoDB 不再可用

InnoDB 不再可用

最近更换了服务器,从 CentOS 5.8 升级到了 CentOS 6.4。我在新服务器上安装了 MySQL 5.1.69,并手动交换了 /var/lib/mysql。我不确定旧服务器上的 MySQL 版本是什么,但希望是一样的。

当我尝试查询表时,得到以下信息:

ERROR 1286 (42000): Unknown table engine 'InnoDB'

不使用 InnoDB 的表工作正常。看起来我没有加载 InnoDB。我使用 安装了 MySQL yum install mysql mysql-server。为什么没有加载 InnoDB,我应该如何加载它?

编辑:

也许我应该手动更改 ib_logfile0 以使文件大小相同?

mysql> SHOW ENGINES;
+------------+---------+-----------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                   | Transactions | XA   | Savepoints |
+------------+---------+-----------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                     | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                        | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance    | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables | NO           | NO   | NO         |
+------------+---------+-----------------------------------------------------------+--------------+------+------------+
4 rows in set (0.00 sec)

mysql>

/var/log/mysqld.log:

130622 17:05:19 [Note] /usr/libexec/mysqld: Shutdown complete

130622 17:05:19 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
130622 17:06:09 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
130622 17:06:09  InnoDB: Initializing buffer pool, size = 8.0M
130622 17:06:09  InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
130622 17:06:09 [ERROR] Plugin 'InnoDB' init function returned error.
130622 17:06:09 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
130622 17:06:09 [Note] Event Scheduler: Loaded 0 events
130622 17:06:09 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.1.69'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  Source distribution

答案1

似乎像这样是一个很好的答案。这基本上表明您应该自己删除/重建ib_logfile0。只需将文件移动到安全的地方(而不是正在查找它的 MySQL 目录中),然后重新启动服务器。

需要注意的是:您确实有需要 InnoDB 的数据库吗?如果是,您可以手动对每个数据库执行 mydump 以获取备份,然后从 MySQL 数据库中删除数据库,关闭 MySQL,移动/删除 — 我ib_logfile0还建议移动/删除ibdata1ib_logfile1— 然后重新启动 MySQL。

然后检查日志以查看 InnoDB 是否已启动。我敢打赌它会启动的。此时重新创建您要删除的数据库并重新导入数据。将创建新的ibdata1ib_logfile0文件ib_logfile1,一切应该都很好。

答案2

您是否从旧服务器复制了 ib_logfile0 文件?如果是,请尝试将其移出该目录(或重命名)并重新启动 mysqld。

相关内容