MySQL停止了致命错误

时间:2014-11-23 03:30:12

标签: php mysql wordpress

我在一个非托管云实例的数字海洋实例上托管一个Wordpress网站。我以前曾经有一个问题,当我去我的网站时,它说,数据库连接没有建立。那么为了使它工作,我需要重新启动mysql服务。

现在我再次得到同样的错误,这个时间频率也很高。所以我去了错误日志,我认为这部分,我在这里粘贴指向问题:

    141123  3:15:39 InnoDB: The InnoDB memory heap is disabled
141123  3:15:39 InnoDB: Mutexes and rw_locks use GCC atomic builtins
141123  3:15:39 InnoDB: Compressed tables use zlib 1.2.3.4
141123  3:15:39 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(135987200 bytes) failed; errno 12
141123  3:15:39 InnoDB: Completed initialization of buffer pool
141123  3:15:39 InnoDB: Fatal error: cannot allocate memory for the buffer pool
141123  3:15:39 [ERROR] Plugin 'InnoDB' init function returned error.
141123  3:15:39 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
141123  3:15:39 [ERROR] Unknown/unsupported storage engine: InnoDB
141123  3:15:39 [ERROR] Aborting

所以我认为问题是因为它不能为缓冲池分配内存,因为这是致命错误然后这可能是什么,那就是停止MySQL。但问题是我不知道如何解决它,如果这是真的认为是导致问题?那么它是与服务器配置相关的东西还是我的代码中可能存在一些疯狂的查询?请让我知道你认为可以解决这个问题的方法吗?

先谢谢你们。

----更新------

尝试修复@Sajidkhan(下面的答案之一)。 Sill mysql在一段时间后关闭,但是这次日志有点不同。以下是我现在可以看到的内容。

141206 14:38:59 [Note] Plugin 'FEDERATED' is disabled.
141206 14:38:59 InnoDB: The InnoDB memory heap is disabled
141206 14:38:59 InnoDB: Mutexes and rw_locks use GCC atomic builtins
141206 14:38:59 InnoDB: Compressed tables use zlib 1.2.3.4
141206 14:38:59 InnoDB: Initializing buffer pool, size = 128.0M
141206 14:38:59 InnoDB: Completed initialization of buffer pool
141206 14:38:59 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
141206 14:38:59  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
141206 14:38:59  InnoDB: Waiting for the background threads to start
141206 14:39:00 InnoDB: 5.5.31 started; log sequence number 512843890

2 个答案:

答案 0 :(得分:1)

这里的关键是这一行:

141123  3:15:39 InnoDB: Fatal error: cannot allocate memory for the buffer pool

您应该尝试创建swap file或升级到Digital Ocean上的下一个计划。

答案 1 :(得分:0)

如果你真的需要skip-innodb(用例:内存占用少),那么你当然不必评论它。但是,如果InnoDB是默认存储引擎,则在您告诉它使用哪个存储引擎时,服务器将无法启动,例如,默认存储引擎= Myisam的myisam。

试试这个:

sudo -u mysql mysqld --skip-innodb --default-storage-engine=myisam