成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Kill掉MySQLd_Safe進程會影響MySQLd進程?

數據庫 其他數據庫
mysqld_safe 命令啟動,kill 父進程(非會話首進程),不會導致子進程退出;重新啟動父進程,報錯子進程已存在。可以使用mysqld_safe命令啟動 改造mysqld_safe腳本,實現【啟、停mysqld_safe進程,不會影響mysqld進程】。

1、背景

公司內部看到一則問題

  • ill -9 mysqld_safe 進程
  • systemd 檢測到 mysqld_safe 進程不存在后,重新拉起 mysqld_safe 進程
  • mysqld_safe 進程啟動后,發現 mysqld 進程也被重啟

期望:啟、停 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.

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.

確實在 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).

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=false

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=4306

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,導致組中所有進程被 kill
  • systemd 檢測到 mysqld_safe 異常退出,Restart=on-failure 觸發重新拉起 mysqld_safe
  • mysqld_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/data

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=4306

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=4306

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=4306

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

4、總結

  • mysqld_safe 進程和 mysqld 進程是父子進程關系
  • systemd 服務啟動,kill 父進程(會話首進程),會導致子進程也退出
  • mysqld_safe 命令啟動,kill 父進程(非會話首進程),不會導致子進程退出;重新啟動父進程,報錯子進程已存在
  • 可以使用mysqld_safe命令啟動 + 改造mysqld_safe腳本,實現【啟、停mysqld_safe進程,不會影響mysqld進程】。此時不要混合使用systemd啟動數據庫,需要維護這個特殊的mysqld_safe
責任編輯:武曉燕 來源: GreatSQL社區
相關推薦

2010-06-04 14:49:15

Linux 查看進程

2010-06-11 13:48:44

影響MySQL

2013-09-27 09:56:25

2021-04-12 05:58:43

進程內核機制

2010-06-10 12:17:27

MySQL數據庫

2010-06-07 12:51:51

Linux 查看進程

2010-06-10 17:34:22

Linux 查看進程

2011-08-18 16:30:10

Oracle鎖表查詢kill進程

2010-04-14 14:52:14

Unix操作系統

2009-05-26 12:14:59

Linuxkill終止命令

2024-04-11 10:09:49

數字化轉型

2021-03-19 09:30:22

Linuxkill命令 管理進程

2010-02-25 10:28:43

Linux進程管理

2018-07-27 18:47:01

數據庫MySQL線程

2024-02-21 08:00:55

WindowsDWM進程

2023-03-05 16:12:41

Linux進程線程

2011-05-17 10:10:15

MySQLmysqld

2017-08-06 00:05:18

進程通信開發

2025-05-29 08:10:00

Linux進程系統

2010-07-20 16:30:44

MySQL內存
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 视频二区 | 久久国产区 | 欧美专区在线 | 一级欧美一级日韩片免费观看 | 91大片| 日本久久精 | 久久精品视频在线观看 | 激情av| 99re6在线视频精品免费 | 丝袜美腿一区二区三区 | 精品久久影院 | 紧缚调教一区二区三区视频 | 中文字幕一级毛片 | 黄色成人亚洲 | 中文字幕日韩欧美 | 亚洲成年人免费网站 | 日日摸夜夜添夜夜添精品视频 | 亚洲精品视频在线 | 中文字幕在线网 | 中文字幕在线观看精品 | www.日本三级 | 欧美8一10sex性hd| 国产欧美精品在线观看 | 日韩视频一区二区 | 成人性视频免费网站 | 国产精品久久久久久久久免费高清 | 国产三级日本三级 | 五月免费视频 | 国产一级大片 | 91av视频| 亚洲精品在线免费播放 | 国产高清无av久久 | 国产亚洲一区二区三区 | 91九色麻豆 | 二区不卡 | 一区久久| 成人免费大片黄在线播放 | av中文字幕在线 | 97久久精品午夜一区二区 | 色爱综合网 | 亚洲第一av |