当我在亚马逊 ec2 微型实例中出现“mysqld 已死但子系统已锁定”时该怎么办?

Aru*_*ony 5 mysql amazon-ec2

我有一个 Amazon ec2 微型实例,其中包含一个 WordPress 站点。从昨天开始,我的 mysql 数据库一直崩溃说:

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo service mysqld status
mysqld dead but subsys locked
Run Code Online (Sandbox Code Playgroud)

我尝试重新启动 mysqld,但每隔 5 分钟它就会崩溃并显示相同的消息 - “建立数据库连接时出错”

这是我的数据库日志文件读取的内容 -

160123 05:44:41 mysqld_safe mysqld restarted
160123  5:44:43 [Note] /usr/libexec/mysql55/mysqld (mysqld 5.5.46) starting as process 7928 ...
160123  5:44:44 [Note] Plugin 'FEDERATED' is disabled.
160123  5:44:46 InnoDB: The InnoDB memory heap is disabled
160123  5:44:46 InnoDB: Mutexes and rw_locks use GCC atomic builtins
160123  5:44:46 InnoDB: Compressed tables use zlib 1.2.8
160123  5:44:46 InnoDB: Using Linux native AIO
160123  5:44:46 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
160123  5:44:46 InnoDB: Completed initialization of buffer pool
160123  5:44:46 InnoDB: Fatal error: cannot allocate memory for the buffer pool
160123  5:44:46 [ERROR] Plugin 'InnoDB' init function returned error.
160123  5:44:46 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160123  5:44:46 [ERROR] Unknown/unsupported storage engine: InnoDB
160123  5:44:46 [ERROR] Aborting    
160123  5:44:46 [Note] /usr/libexec/mysql55/mysqld: Shutdown complete
160123 05:44:46 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Run Code Online (Sandbox Code Playgroud)

当我在 Google 上搜索该问题的解决方案时发现的常见解决方案 -mysqld dead but subsys locked是创建交换文件。我完全按照大多数解决方案的建议做了,但由于我不熟悉 UNIX,我不知道我所做的是否正确。

我有 1MB 的交换空间。

[ec2-user@ip-xx-xx-xx-xxx /]$ free
             total       used       free     shared    buffers     cached
Mem:       1019452     613820     405632         76      19124      64348
-/+ buffers/cache:     530348     489104
Swap:      1048572      46604    1001968
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

或者,这个问题有没有其他解决方案。请帮忙。

Ric*_*mes 0

致命错误:无法为缓冲池分配内存

你只有 1GB 内存吗?的价值是什么innodb_buffer_pool_size;它不应超过 50M。

您对 my.cnf 进行了哪些更改?可能还有其他事情需要减少。(或者你可以获得更多的内存。)

更多的

如果这 1GB 中不仅仅只有 MySQL,那么拥有如此小的虚拟机可能确实不切实际。要么分成多个虚拟机,一个用于 MySQL,一个用于应用程序,或者获得一个更大的虚拟机。