我不知道我在这里做了什么,但是我的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)
答案 0 :(得分:4)
问题很可能是不匹配的日志文件大小:mysql期望innodb日志文件正好是配置文件中指定的大小。要检查这是否真的是问题,请执行以下操作:
sudo /etc/init.d/mysql restart
sudo tail -n 1000 /var/log/syslog
(我假设你在Debian上)
如果你看到有关innodb和日志文件大小的一些错误报告(对不起,我无法记住邮件的确切措辞),那么修复很容易:
/var/lib/mysql/ib_logfile0
和/var/lib/mysql/ib_logfile1
)sudo mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0.bak
等。/var/log/syslog
是否不再发生错误SHOW ENGINES;
检查InnoDB现在是否可用... 希望这有帮助!
答案 1 :(得分:1)
要做的第一件事是在MySQL提示符下运行SHOW ENGINES
以确认Innodb是否被禁用。
如果是,请检查MySQL服务器的错误日志。它将详细说明InnoDB被禁用的原因。 MySQL可能在启动时禁用InnoDB有几个原因。例如,如果my.cnf中指定的innodb日志文件大小与磁盘上现有日志文件的大小不匹配。
答案 2 :(得分:0)
我在预装mysql 5.5的Debian 7服务器上遇到了这个问题。在SHOW ENGINES
正如之前所提到的那样:
sudo /etc/init.d/mysql restart
sudo tail -n 1000 /var/log/syslog
我有这个:
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的位置。
innodb_buffer_pool_size=100M (May vary per case)
添加:
[mysqld]
innodb_force_recovery = 1
执行以下
mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0.bak
mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/ib_logfile1.bak
启动MySQL并进行备份以防万一。
登录mysql并:show engines;
- 检查InnoDB是否已列出且SUPPORT = YES。
如果一切顺利,直到6,请退回并编辑my.cnf设置:
的[mysqld] innodb_force_recovery = 0
重启MySQL
访问您的网站,检查一切是否有效,祝您好运!
PS - 您可能想要检查导致此问题的原因,可能是在您的生产服务器上运行,或者重新启动导致您的日志文件损坏。您现在已经处于清醒状态,因此请浏览并确保所有其他方面看起来都不错,尤其是可用磁盘空间和异地备份。