会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 Kill掉MySQLd_Safe进程会影响MySQLd进程?!

Kill掉MySQLd_Safe进程会影响MySQLd进程?

时间:2025-11-05 11:43:54 来源:益强数据堂 作者:数据库 阅读:796次

1、进进程背景

公司内部看到一则问题ill -9 mysqld_safe 进程systemd 检测到 mysqld_safe 进程不存在后,影响重新拉起 mysqld_safe 进程mysqld_safe 进程启动后,进进程发现 mysqld 进程也被重启

期望:启、影响停 mysqld_safe 进程,进进程不会影响 mysqld 进程

Kill掉MySQLd_Safe进程会影响MySQLd进程?

2、影响systemd 服务启动

2.1、进进程复现问题

1)、影响查看数据库服务状态

复制[greatsql@greatsql-1 ~]$ sudo systemctl status db-4306 ● db-4306.service - db-4306 Server Loaded: loaded (/usr/lib/systemd/system/db-4306.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2023-07-19 11:15:18 CST; 6h ago Main PID: 14917 (mysqld_safe) CGroup: /system.slice/db-4306.service ├─14917 /bin/sh /greatsql/svr/greatsql/bin/mysqld_safe --defaults-file=/greatsql/conf/greatsql4306.cnf └─16340 /greatsql/svr/greatsql/bin/mysqld --defaults-file=/greatsql/conf/greatsql4306.cnf --basedir=/greatsql/svr/greatsql --datadir=/greatsql/dbdata/data4306/data -... Jul 19 11:15:18 greatsql-1 systemd[1]: Started db-4306 Server. Jul 19 11:15:19 greatsql-1 mysqld_safe[14917]: mysqld_safe Adding /greatsql/svr/GreatSQL-8.0.32-24-Linux-glibc2.17-x86_64/lib/mysql/libjemalloc.so.1 t...or mysqldJul 19 11:15:19 greatsql-1 mysqld_safe[14917]: 2023-07-19T03:15:19.907338Z mysqld_safe Logging to /greatsql/logs/error4306.log. Jul 19 11:15:19 greatsql-1 mysqld_safe[14917]: 2023-07-19T03:15:19.953728Z mysqld_safe Starting mysqld daemon with databases from /greatsql/dbdata/data4306/data Hint: Some lines were ellipsized,进进程 use -l to show in full.1.2.3.4.5.6.7.8.9.10.11.12.

2)、kill -9 mysqld_safe 进程,影响并再次查看数据库服务状态

复制[greatsql@greatsql-1 ~]$ kill -9 14917 [greatsql@greatsql-1 ~]$ sudo systemctl status db-4306 ● db-4306.service - db-4306 Server Loaded: loaded (/usr/lib/systemd/system/db-4306.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2023-07-19 18:00:33 CST; 43s ago Main PID: 15195 (mysqld_safe) Tasks: 50 CGroup: /system.slice/db-4306.service ├─15195 /bin/sh /greatsql/svr/greatsql/bin/mysqld_safe --defaults-file=/greatsql/conf/greatsql4306.cnf └─16613 /greatsql/svr/greatsql/bin/mysqld --defaults-file=/greatsql/conf/greatsql4306.cnf --basedir=/greatsql/svr/greatsql --datadir=/greatsql/dbdata/data4306/data -... Jul 19 18:00:33 greatsql-1 systemd[1]: Started db-4306 Server. Jul 19 18:00:34 greatsql-1 mysqld_safe[15195]: mysqld_safe Adding /greatsql/svr/GreatSQL-8.0.32-24-Linux-glibc2.17-x86_64/lib/mysql/libjemalloc.so.1 t...or mysqldJul 19 18:00:34 greatsql-1 mysqld_safe[15195]: 2023-07-19T10:00:34.640240Z mysqld_safe Logging to /greatsql/logs/error4306.log. Jul 19 18:00:34 greatsql-1 mysqld_safe[15195]: 2023-07-19T10:00:34.679333Z mysqld_safe Starting mysqld daemon with databases from /greatsql/dbdata/data4306/data Hint: Some lines were ellipsized,进进程 use -l to show in full.1.2.3.4.5.6.7.8.9.10.11.12.13.14.

确实在 kill -9 mysqld_safe 后,重新拉起了 mysqld_safe 和 mysqld 进程(它们的影响 PID 和之前不一样) 

3)、查看数据库错误日志

复制2023-07-19T18:00:31.933020+08:00 0 [System] [MY-013172] [Server] Received SHUTDOWN from user <via user signal>. Shutting down mysqld (Version: 8.0.32-24).1.

4)、进进程查看 service 文件

复制[greatsql@greatsql-1 ~]$ cat /usr/lib/systemd/system/db-4306.service [Unit] Description=db-4306 Server After=network.target [Install] WantedBy=multi-user.target [Service] User=greatsql Group=greatsql Type=simple ExecStart=/greatsql/svr/greatsql/bin/mysqld_safe --defaults-file=/greatsql/conf/greatsql4306.cnf Restart=on-failure LimitNOFILE=1024000 LimitNPROC=1024000 TimeoutStopSec=15 PrivateTmp=false1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.

2.2、影响分析原因

1)、进进程查看进程信息

复制[greatsql@greatsql-1 ~]$ ps axj |head -1;ps axj |grep 4306 |grep -v grep PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 1 15195 15195 15195 ? -1 Ss 986 0:00 /bin/sh /greatsql/svr/greatsql/bin/mysqld_safe --defaults-file=/greatsql/conf/greatsql4306.cnf 15195 16613 15195 15195 ? -1 Sl 986 0:06 /greatsql/svr/greatsql/bin/mysqld --defaults-file=/greatsql/conf/greatsql4306.cnf --basedir=/greatsql/svr/greatsql --datadir=/greatsql/dbdata/data4306/data --plugin-dir=/greatsql/svr/greatsql/lib/plugin --log-error=/greatsql/logs/error4306.log --open-files-limit=65535 --pid-file=/greatsql/dbdata/data4306/data/mysql.pid --socket=/greatsql/dbdata/data4306/data/mysql.sock --port=43061.2.3.4.

mysqld_safe:PID(进程 ID)=PGID(进程组 ID)=SID(会话 ID),说明它是会话首进程,也是该进程组的组长

mysqld_safe 的 PID(进程 ID)=mysqld 的 PPID(父进程 ID),站群服务器说明 mysqld_safe 是 mysqld 的父进程

kill -9 mysqld_safe (会话首进程),会向该进程组的每一个进程发送 SIGKILL,导致组中的进程被中止

2)、整体流程

mysqld_safe 是会话首进程,kill -9 mysqld_safe,导致组中所有进程被 killsystemd 检测到 mysqld_safe 异常退出,Restart=on-failure 触发重新拉起 mysqld_safemysqld_safe 拉起子进程 mysqld

3、mysqld_safe 命令启动

1)、使用 mysqld_safe 启动数据库

复制[greatsql@greatsql-1 ~]$ /greatsql/svr/greatsql/bin/mysqld_safe --defaults-file=/greatsql/conf/greatsql4306.cnf & [1] 18229 [greatsql@greatsql-1 ~]$ mysqld_safe Adding /greatsql/svr/GreatSQL-8.0.32-24-Linux-glibc2.17-x86_64/lib/mysql/libjemalloc.so.1 to LD_PRELOAD for mysqld 2023-07-19T14:20:19.135297Z mysqld_safe Logging to /greatsql/logs/error4306.log. 2023-07-19T14:20:19.173594Z mysqld_safe Starting mysqld daemon with databases from /greatsql/dbdata/data4306/data1.2.3.4.5.

2)、查看进程信息

复制[greatsql@greatsql-1 ~]$ ps axj |head -1;ps axj |grep 4306 |grep -v grep PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 17360 18229 18229 17206 pts/7 17360 S 986 0:00 /bin/sh /greatsql/svr/greatsql/bin/mysqld_safe --defaults-file=/greatsql/conf/greatsql4306.cnf 18229 19658 18229 17206 pts/7 17360 Sl 986 0:02 /greatsql/svr/greatsql/bin/mysqld --defaults-file=/greatsql/conf/greatsql4306.cnf --basedir=/greatsql/svr/greatsql --datadir=/greatsql/dbdata/data4306/data --plugin-dir=/greatsql/svr/greatsql/lib/plugin --log-error=/greatsql/logs/error4306.log --open-files-limit=65535 --pid-file=/greatsql/dbdata/data4306/data/mysql.pid --socket=/greatsql/dbdata/data4306/data/mysql.sock --port=43061.2.3.4.

PID≠SID,不是会话首进程PGID≠TPGID,是后台进程组mysqld_safe 的 PID=mysqld 的 PPID,说明 mysqld_safe 是 mysqld 的服务器托管父进程

3)、kill -9 mysqld_safe 进程,并再次查看进程信息

复制[greatsql@greatsql-1 ~]$ kill -9 18229 [greatsql@greatsql-1 ~]$ ps axj |head -1;ps axj |grep 4306 |grep -v grep PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 1 19658 18229 17206 pts/7 17360 Sl 986 0:07 /greatsql/svr/greatsql/bin/mysqld --defaults-file=/greatsql/conf/greatsql4306.cnf --basedir=/greatsql/svr/greatsql --datadir=/greatsql/dbdata/data4306/data --plugin-dir=/greatsql/svr/greatsql/lib/plugin --log-error=/greatsql/logs/error4306.log --open-files-limit=65535 --pid-file=/greatsql/dbdata/data4306/data/mysql.pid --socket=/greatsql/dbdata/data4306/data/mysql.sock --port=43061.2.3.4.

kill -9 mysqld_safe (非会话首进程),不影响同组的进程(mysqld),此时 init 进程会自动领养 mysqld 进程

4)、重新启动 mysqld_safe 进程,并再次查看进程信息

复制[greatsql@greatsql-1 ~]$ /greatsql/svr/greatsql/bin/mysqld_safe --defaults-file=/greatsql/conf/greatsql4306.cnf & [1] 31401 [greatsql@greatsql-1 ~]$ mysqld_safe Adding /greatsql/svr/GreatSQL-8.0.32-24-Linux-glibc2.17-x86_64/lib/mysql/libjemalloc.so.1 to LD_PRELOAD for mysqld 2023-07-19T14:38:42.429733Z mysqld_safe Logging to /greatsql/logs/error4306.log. 2023-07-19T14:38:42.493870Z mysqld_safe A mysqld process already exists [1]+ Exit 1 /greatsql/svr/greatsql/bin/mysqld_safe --defaults-file=/greatsql/conf/greatsql4306.cnf [greatsql@greatsql-1 ~]$ ps axj |head -1;ps axj |grep 4306 |grep -v grep PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 1 19658 18229 17206 pts/7 17360 Sl 986 0:09 /greatsql/svr/greatsql/bin/mysqld --defaults-file=/greatsql/conf/greatsql4306.cnf --basedir=/greatsql/svr/greatsql --datadir=/greatsql/dbdata/data4306/data --plugin-dir=/greatsql/svr/greatsql/lib/plugin --log-error=/greatsql/logs/error4306.log --open-files-limit=65535 --pid-file=/greatsql/dbdata/data4306/data/mysql.pid --socket=/greatsql/dbdata/data4306/data/mysql.sock --port=43061.2.3.4.5.6.7.8.9.10.11.

mysqld_safe 退出,原因是已存在 mysqld 进程

4、总结

mysqld_safe 进程和 mysqld 进程是父子进程关系systemd 服务启动,kill 父进程(会话首进程),会导致子进程也退出mysqld_safe 命令启动,kill 父进程(非会话首进程),不会导致子进程退出;重新启动父进程,报错子进程已存在可以使用mysqld_safe命令启动 + 改造mysqld_safe脚本,实现【启、停mysqld_safe进程,不会影响mysqld进程】。此时不要混合使用systemd启动数据库,需要维护这个特殊的mysqld_safe

企商汇

(责任编辑:应用开发)

推荐内容
  • 自制电脑音箱无线蓝牙教程(打造个性化无线音箱,让音乐自由流动)
  • Ubuntu如今是市面上使用最广泛的Linux操作系统,无论在桌面环境还是在云环境,这里有几个充分的理由。本文将介绍其中五个最主要的理由。Canonical的创始人Mark Shuttleworth当初一开始有没有料到这一幕,我们无从知晓,不过他确实往这个项目投入了大量的资金和精力。在开创了另外几个项目后,他早已腰缠万贯,不过Ubuntu证明是根难啃的骨头。虽然其他方面已实现了盈利,可是桌面方面依然还没有盈利。Canonical开发的Ubuntu是个众所周知的桌面系统,不过它是家大公司,还在致力于其他众多的重要项目,比如面向手机的Ubuntu、面向服务器的Ubuntu和面向物联网设备的Ubuntu,我们甚至还没有把Mir或Snappy之类的技术算进来。可以说,未来好多年够Canonical忙乎的了。1.Ubuntu无所不在。微软的Windows大获成功的原因之一是因为它在默认情况下随许多PC一同交付。在计算机上从头开始安装Windows的用户并不多。大多数用户在默认情况下获得了随PC安装的Windows。无论你喜不喜欢,Canonical也在对Ubuntu采取同样的做法。如今,这个Linux操作系统随戴尔、IBM及另外几家大牌厂商的PC一同交付。另外,像System76这些小公司也在交付只装有Ubuntu的计算机。这是你看到Unbuntu无所不在的主要原因之一。2. Ubuntu得到支持。除了Ubuntu外,也许只有另外少数几个发行版提供同样的长期支持。大家都提供短期支持(一两年),而Ubuntu却提供五年支持。这做起来要比你想象的困难得多。提供长期支持需要资金和人员,而其他开源项目通常没有这样的资源可以享用。需要的不仅仅是偶尔升级一下程序包。Ubuntu中的许多应用程序由Canonical开发,连来自其他项目(比如Nautilus项目)的应用程序也经过了大量的改动。现在设想一下:他们要提供长达五年的维护工作!面向手机的Ubuntu3. Ubuntu很稳定。外面有几个用户认为,Ubuntu给自己带来了问题,但是带来的问题不多。实际上,对大多数用户而言,Ubuntu运行起来很稳定,这是因为这款操作系统一直在进行调整和修复。开发周期过程中没有集成所有最新的程序包对稳定性也大有帮助。很难让Ubuntu崩溃,不过它确实会崩溃。这款操作系统得到了广泛使用,这也意味着其背后有一个庞大的社区,你可能会很快找到解决所遇到的某个问题的办法。4.Ubuntu易于使用。Unity似乎不是一个颇受欢迎的选择,但它处理起工作流程来确实很拿手。很容易获得并使用,哪怕你来自Windows操作系统阵营。用户在首次启动带Unity的Ubuntu时,不需要做任何额外的事情,它就能运行。即使Unity似乎有点难以调整,但实际并非如此。除了移动启动器(launcher)外,你对于Unity可以进行任何想要实现的操作,有大量的应用程序可以帮助用户完成这项任务。5. Ubuntu准时发布。让Ubuntu能取得今天这样的傲人成绩,其中一个因素是发布节奏很稳定。用户每半年就能获得新的Ubuntu版本,每过两年获得新的LTS(长期支持)版本。它们从不姗姗来迟,而且就在多个月之前选定的某个日期准时交付新版本。假如你想表明开发团队到底有多专业、多严谨,这种守时大有帮助。其中一些读者会反对上述观点,认为Debian、Fedora或其他某个操作系统更优秀。也许只是对你来说是这样。不管这样,这就是开源的魅力所在,你能够选择适合自己、自己又喜欢的某款操作系统。
  • windows 7窗口快捷切换的技巧
  • windows 7 ie8升级到ie9后如何卸载Ie9 Beta还原ie8
  • 国产好用的Linux系统推荐(解放你的操作系统选择,尝试国产Linux系统)
  • Windows7屏幕保护设置图文教程