mysql 服务器一直停止,现在无法再次启动

mysql 服务器一直停止,现在无法再次启动

我在 Ubuntu 服务器上运行 mysql,由于某种原因,mysql 意外关闭。通常我可以重新启动它,但现在它无法启动。我不知道我运行的是哪个版本,也不知道如何找出答案。我甚至找不到 mysql 的任何日志,所以我根本不知道发生了什么,尽管我在正确的地方寻找日志。我真的迷路了,有人能给我指明正确的方向吗?

编辑:

好的,在发现我可以在系统日志中查找一些信息后,我发现这可能会有所帮助:

Jun 18 12:37:39 ip-10-98-167-102 kernel: [6892262.992944] Out of memory: Kill process 2351 (mysqld) score 95 or sacrifice child
Jun 18 12:37:39 ip-10-98-167-102 kernel: [6892262.992961] Killed process 2351 (mysqld) total-vm:689332kB, anon-rss:57548kB, file-rss:0kB
Jun 18 12:37:39 ip-10-98-167-102 kernel: [6892263.072544] init: mysql main process (2351) killed by KILL signal
Jun 18 12:37:39 ip-10-98-167-102 kernel: [6892263.073876] init: mysql main process ended, respawning
Jun 18 12:37:40 ip-10-98-167-102 kernel: [6892263.872080] type=1400 audit(1340023060.184:20): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=7068 comm="apparmor_parser"
Jun 18 12:37:41 ip-10-98-167-102 kernel: [6892265.330749] init: mysql main process (7072) terminated with status 1

答案1

该日志解释了 MySQL 为何死亡。它被 OOM 杀手杀死了。OOM 杀手是 Linux 的一个有趣部分,它之所以存在是因为 Linux 向进程过度承诺 RAM,然后当它们真正需要承诺的 RAM 时,它会杀死其中一个进程,以便为其他进程提供它们想要的 RAM。

它根据一种似乎对 MySQL 排名很高的算法来选择要杀死哪一个。可能是因为它使用了大量 RAM。

我建议在你的 MySQL 机器上运行 mysqltuner.pl(使用 获取wget mysqltuner.pl),并查看输出以top查看哪些进程正在使用你的所有内存。

答案2

好吧,我为自己能搞清楚这一点而感到自豪,因为我不是 Linux 专家。结果发现,有一个 Java 进程占用了所有内存(我不知道 Java 进程是如何启动的,因为我没有在该服务器上使用它)。这导致 mysql 进程没有足够的内存来启动。我杀死了 Java 进程,mysql 就能立即启动。我想我现在真正的问题是 Java 进程为什么以及如何启动,以及它是否重要?

答案3

您的服务器可能内存不足。查看以下输出free -t

运行top将会告诉你它在哪里使用。

考虑添加更多物理内存。

相关内容