admin管理员组

文章数量:1794759

MySQL kill

实验环境: centos7.9 + percona rpm方式安装的 8.0.37

先试下kill -9 ,如下图:

kill -9

可以看到kill -9后,systemd会自动重新拉起一个mysqld进程。

再试下kill -15,如下图:

kill-15

可以看到systemd没有自动拉起新的mysqld进程。 如果要启动mysqld,还需要执行 systemctl start mysqld 才可以。

为啥会出现这种情况??

原因藏在了MySQL的systemd的配置文件里,如下:

systemd配置

注意上图中标红的地方, 在systemd中,Restart 一般有如下几种值:

代码语言:txt复制
no:默认值,表示服务不会自动重启。
on-success:如果服务以成功状态(即退出码为0)退出,则会重启服务。
on-failure:如果服务以失败状态(即非零的退出码)退出,则会重启服务。这是比较常用的设置,可以确保服务在遇到错误时自动尝试恢复。
on-abnormal:如果服务异常终止(例如被信号杀死或超出了资源限制),则会重启服务。
on-watchdog:如果 watchdog 超时导致服务被终止,则会重启服务。这通常用于那些配置了 WatchdogSec 的服务。
on-abort:这是一个较旧的术语,现在等同于 on-abnormal。
always:无论服务如何退出,都会重启服务。

根据上面的2个实验:

因为 kill -15的退出码是0(通常正常的退出码都是0的),因此systemd不会再次尝试拉起MySQLD进程。

因为 kill -9 的退出码非0,满足了on-failure 这个条件,因此systemd会尝试再次拉起MySQLD进程。

此外,关于mysqld_safe的也是类似的,可参考下面这2篇:

【GreatSQL】

本文标签: MySQL kill