前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >MySQL kill -9和kill -15后能否被systemd自动拉起

MySQL kill -9和kill -15后能否被systemd自动拉起

原创
作者头像
保持热爱奔赴山海
发布2024-10-19 15:19:04
发布2024-10-19 15:19:04
1480
举报
文章被收录于专栏:数据库相关数据库相关

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

先试下kill -9 ,如下图:

kill -9
kill -9

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

再试下kill -15,如下图:

kill-15
kill-15

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

为啥会出现这种情况??

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

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篇:

https://cloud.tencent.com/developer/article/2327347 【GreatSQL】

https://cloud.tencent.com/developer/article/1971013

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档