mysql 挂掉时自动重启

Los*_*les 15 memory linux mysql

我有一个机架空间服务器,我一直在租用它来运行我的个人项目。由于我很便宜,它有 256Mb 的 RAM,老实说,它处理不了很多。每隔一段时间,当流量急剧上升时,服务器决定开始杀死进程,似乎 mysqld 是一种流行的杀死进程。我尝试访问我的网站,但收到一条消息,提示建立数据库连接时出错。检查日志显示mysqld由于内存不足而被杀死。

由于我仍然和昨天一样穷,并且不想升级我的机架空间 VM 的 RAM,有没有办法告诉它在 mysqld 死机时自动重新启动它?

我想使用类似 crontab 的东西,但唉,我也不知道在那里做什么。我想我是“桌面上的 Linux”一代的产物,因为我可以在我的台式机和笔记本电脑(几乎只运行 Linux)上做大多数事情,但仍然缺乏很多 Linux 的服务器管理技能。

服务器运行 CentOS 6.3

ter*_*don 16

这不是一个干净的解决方案,显然首先避免这个问题会更好。无论如何,我不确定 CentOS 如何管理服务,但我认为它使用service. 如果是这样,您可以检查mysql服务是否正在运行

/sbin/service mysql status
Run Code Online (Sandbox Code Playgroud)

如果mysql正在运行,则此命令将成功退出,如果 i 未运行,则返回非 0 退出状态。因此,如果服务未使用以下命令运行,您可以启动该服务:

/sbin/service mysql status || service mysql start
Run Code Online (Sandbox Code Playgroud)

您可以添加此行以/etc/crontab每分钟启动这些命令:

* * * * * /sbin/service mysql status || service mysql start
Run Code Online (Sandbox Code Playgroud)


Rol*_*DBA 6

这有点令人不安。

mysqld总是被mysqld_safe重新启动,因为在底部有一个无限循环mysqld_safe来检查异常关闭。如果错误太严重,甚至mysqld_safe无法mysqld在后续尝试中重新启动。

鉴于mysqld_safe设计用于这种情况,mysqld如果mysqld_safe无论如何都会拒绝它,强行启动可能不是一个好主意。

您需要在 my.cnf 中找到错误日志,它将位于

[mysqld]
log-error=log-filename
Run Code Online (Sandbox Code Playgroud)

或者

[mysqld_safe]
log-error=log-filename
Run Code Online (Sandbox Code Playgroud)

阅读文本文件(可能通过运行tail -30 log-filename)并找到 mysqld 处理关闭的来源。