如何确定 MySQL 停止运行的原因?
我最近将 Ubuntu 服务器升级到 16.04,现在 MySQL 会在几个小时后突然停止运行。它充当 Wordpress 安装的后端。我的 MySQL 版本现在是:
mysql Ver 14.14 Distrib 5.5.54, for debian-linux-gnu (x86_64) using readline 6.3
检查who -b
显示服务器几天内没有重新启动,所以这不是 MySQL 无法正常启动的问题。
日志/var/log/mysql/error.log
是空的,所有已存档的文件也是空的。
日志/var/log/syslog.log
没有显示任何异常或引用mysql。
我unattended-upgrades
安装了软件包以自动安装安全更新,并且日志/var/log/unattended-upgrades/unattended-upgrades.log
显示:
2017-03-22 07:00:32,459 INFO Packages that will be upgraded: libc-bin libc-dev-bin libc6 libc6-dev locales multiarch-support
2017-03-22 07:00:32,459 INFO Writing dpkg log to '/var/log/unattended-upgrades/unattended-upgrades-dpkg.log'
2017-03-22 07:00:38,595 INFO All upgrades installed
2017-03-22 07:00:39,846 ERROR No '/usr/bin/mail' or '/usr/sbin/sendmail',can not send mail. You probably want to install the 'mailx' package.
2017-03-22 07:00:39,846 WARNING Found /var/run/reboot-required, rebooting
表明它确实安装了一些更新,并已安排重新启动,但尚未重新启动。
我如何才能确切地找出导致 MySQL 停止或崩溃的原因?
答案1
它可以因 OOM(内存不足终止程序)而停止。简而言之:当内存(包括交换空间)几乎完全填满时,Linux 内核可以终止一些占用大量内存的进程,以缓解内存压力。
有dmesg | grep -i oom
匯報導嗎?
答案2
尝试查找可能导致 mysqld 死亡的因素。查看这篇博文,了解要使用哪些工具。Auditctl 在我参与的一个案例中发挥了作用。https://www.percona.com/blog/2015/03/06/stopped-mysql-tracing-back-signals-sent-mysql/
答案3
首先,由于您的 mysql 错误日志是空的,我将启用日志记录: https://dev.mysql.com/doc/refman/8.0/en/error-log.html
添加此内容:
/etc/my.cnf # most common location
log-error=/var/log/mysqld.log
另外,我不允许外部连接到端口 3306。如果您需要远程访问 MySQL,请改用 SSH 隧道。