我最近从之前的LTS Ubuntu升级到Precise,现在mysql拒绝启动。 当我试图启动它时,它抱怨以下内容:
╰$ sudo service mysql restart stop: Unknown instance: start: Job failed to start
这显示在“/var/log/mysql/error.log”中:
120415 23:01:09 [Note] Plugin 'InnoDB' is disabled. 120415 23:01:09 [Note] Plugin 'FEDERATED' is disabled. 120415 23:01:09 [ERROR] Unknown/unsupported storage engine: InnoDB 120415 23:01:09 [ERROR] Aborting 120415 23:01:09 [Note] /usr/sbin/mysqld: Shutdown complete
我已经检查了所有mysql目录的权限,以确保它拥有所有权,并且我也重命名了previou ib_logs,以便它可以重新制作它们。 我只是在看到谷歌的结果2个小时后,没有得到这个问题的地方。
检查日志后,我发现以下错误:
[ERROR] Unknown/unsupported storage engine: InnoDB
我删除了这些文件:
rm /var/lib/mysql/ib_logfile0 rm /var/lib/mysql/ib_logfile1
在/var/lib/mysql
这重新启动后解决了我的问题。
如果你真的需要skip-innodb
(用例:内存占用less),那么当然你不必评论它。 但是,如果InnoDB是默认的存储引擎,服务器将无法启动,直到您告诉它将使用哪个存储引擎,例如,对于MyISAM, default-storage-engine=myisam
。
所以,试试这个:
$ sudo -u mysql mysqld --skip-innodb --default-storage-engine=myisam
如果您使用的是MySQL 5.6以上版本,并且要禁用InnoDB,请不要忘记“ –default-tmp-storage ”,否则它将不起作用:
要禁用InnoDB,请使用–innodb = OFF或–skip-innodb。 在这种情况下,因为默认存储引擎是InnoDB,所以服务器将不会启动,除非您还使用–default-storage-engine和–default-tmp-storage-engine将默认值设置为某个其他引擎临时表。
http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#option_mysqld_ignore-builtin-innodb
你可以把这个添加到你的my.cnf中:
[mysqld] innodb=OFF ignore-builtin-innodb skip-innodb default-storage-engine=myisam default-tmp-storage-engine=myisam
只是为了确保它能工作。
检查你的mysql错误日志。
tail -100 /var/log/mysql/error.log
如果你的日志说(像我一样):
InnoDB:初始化缓冲池,大小= 128.0M InnoDB:mmap(137363456字节)失败; errno 12 [错误] InnoDB:无法为缓冲池分配内存
您没有足够的内存来使用128M的默认缓冲区大小
编辑configuration文件/etc/mysql/my.cnf添加一行来指定一个较小的innodb_buffer_pool_size。
# make the buffer pool smaller than 128M since we only have 1 GB of total RAM innodb_buffer_pool_size = 16M
保存configuration文件,并启动mysql
sudo service mysql start
尝试2件事。 1.降低innodb缓冲池大小。 2.编辑mysql初始脚本并添加–innodb选项。
我也想知道如果你的包是越野车。 你可以尝试一个不同的小版本?
另外,我假设你的mysql服务器也升级了? 也许那个版本坏了? 精确还不是最终的。
我删除了我用于tmpdir
的位置时出现此错误。 如果您最近更改了tmpdir
,则可能需要检查它是否是有效的可写位置。