MySQL/MariaDB 停止运行。我该如何找出原因?

MySQL/MariaDB 停止运行。我该如何找出原因?

今天我发现 MySQL/MariaDB 在 CentOS VPS 上停止运行。当我检查状态时,我得到:

# service mysql status
ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists

因此我删除了该文件,然后重新启动服务。但当天晚些时候,MySQL 将再次处于离线状态,而锁定文件仍会存在。因此,发生了一些事情,导致 MySQL 死机但保留了锁定文件,这告诉我它不是干净/平稳的退出。

过去,我曾看到锁定文件存在但服务未运行,这是因为整个 VPS 突然重启。但这里不是这种情况,因为我的 VPS 正常运行时间超过 160 天。

我注意到fail2ban今天 VPS 上的 Wordpress 网站上有一些随机黑客攻击尝试被禁止。因此,有相当多的流量试图到处攻击服务器,直到它们被自动禁止。

  1. 我如何确定导致 MySQL 随机停止的原因?
  2. 自动重启 MySQL 的推荐方法是什么?我可以使用类似导师

更新:查看我的messages日志后,我看到了以下内容:

Dec  1 14:06:42 localhost kernel: Out of memory: Kill process 25063 (mysqld) score 24 or sacrifice child
Dec  1 14:06:42 localhost kernel: Killed process 25063, UID 27, (mysqld) total-vm:773716kB, anon-rss:32300kB, file-rss:48kB

那么,这是否意味着 MySQL 只是请求过多(可能来自 httpd)?

答案1

当系统内存和交换空间不足时,OOM 杀手就会启动 - 该mysqld进程被选为受害者,可能是因为该进程的内存使用率高,而其内存上的活动相对较少。

要么调整可用的缓冲池大小,使 MariaDB 占用更少的 RAM 并且不触发 OOM 杀手(这可能会损害性能),要么为系统提供更多的 RAM 或交换。

相关内容