亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747


MySQLd_safe 命令啟動(dòng),kill 父進(jìn)程(非會(huì)話首進(jìn)程),不會(huì)導(dǎo)致子進(jìn)程退出;重新啟動(dòng)父進(jìn)程,報(bào)錯(cuò)子進(jìn)程已存在。可以使用mysqld_safe命令啟動(dòng) 改造mysqld_safe腳本,實(shí)現(xiàn)【啟、停mysqld_safe進(jìn)程,不會(huì)影響mysqld進(jìn)程】。

1、背景

公司內(nèi)部看到一則問題

  • ill -9 mysqld_safe 進(jìn)程
  • systemd 檢測(cè)到 mysqld_safe 進(jìn)程不存在后,重新拉起 mysqld_safe 進(jìn)程
  • mysqld_safe 進(jìn)程啟動(dòng)后,發(fā)現(xiàn) mysqld 進(jìn)程也被重啟

期望:?jiǎn)ⅰ⑼?mysqld_safe 進(jìn)程,不會(huì)影響 mysqld 進(jìn)程

2、systemd 服務(wù)啟動(dòng)

2.1、復(fù)現(xiàn)問題

1)、查看數(shù)據(jù)庫(kù)服務(wù)狀態(tài)

[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 進(jìn)程,并再次查看數(shù)據(jù)庫(kù)服務(wù)狀態(tài)

[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.

確實(shí)在 kill -9 mysqld_safe 后,重新拉起了 mysqld_safe 和 mysqld 進(jìn)程(它們的 PID 和之前不一樣) 

3)、查看數(shù)據(jù)庫(kù)錯(cuò)誤日志

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)、查看進(jìn)程信息

[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(進(jìn)程 ID)=PGID(進(jìn)程組 ID)=SID(會(huì)話 ID),說明它是會(huì)話首進(jìn)程,也是該進(jìn)程組的組長(zhǎng)

mysqld_safe 的 PID(進(jìn)程 ID)=mysqld 的 PPID(父進(jìn)程 ID),說明 mysqld_safe 是 mysqld 的父進(jìn)程

kill -9 mysqld_safe (會(huì)話首進(jìn)程),會(huì)向該進(jìn)程組的每一個(gè)進(jìn)程發(fā)送 SIGKILL,導(dǎo)致組中的進(jìn)程被中止

2)、整體流程

  • mysqld_safe 是會(huì)話首進(jìn)程,kill -9 mysqld_safe,導(dǎo)致組中所有進(jìn)程被 kill
  • systemd 檢測(cè)到 mysqld_safe 異常退出,Restart=on-failure 觸發(fā)重新拉起 mysqld_safe
  • mysqld_safe 拉起子進(jìn)程 mysqld

3、mysqld_safe 命令啟動(dòng)

1)、使用 mysqld_safe 啟動(dòng)數(shù)據(jù)庫(kù)

[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)、查看進(jìn)程信息

[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,不是會(huì)話首進(jìn)程PGID≠TPGID,是后臺(tái)進(jìn)程組mysqld_safe 的 PID=mysqld 的 PPID,說明 mysqld_safe 是 mysqld 的父進(jìn)程

3)、kill -9 mysqld_safe 進(jìn)程,并再次查看進(jìn)程信息

[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 (非會(huì)話首進(jìn)程),不影響同組的進(jìn)程(mysqld),此時(shí) init 進(jìn)程會(huì)自動(dòng)領(lǐng)養(yǎng) mysqld 進(jìn)程

4)、重新啟動(dòng) mysqld_safe 進(jìn)程,并再次查看進(jìn)程信息

[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 進(jìn)程

4、總結(jié)

  • mysqld_safe 進(jìn)程和 mysqld 進(jìn)程是父子進(jìn)程關(guān)系
  • systemd 服務(wù)啟動(dòng),kill 父進(jìn)程(會(huì)話首進(jìn)程),會(huì)導(dǎo)致子進(jìn)程也退出
  • mysqld_safe 命令啟動(dòng),kill 父進(jìn)程(非會(huì)話首進(jìn)程),不會(huì)導(dǎo)致子進(jìn)程退出;重新啟動(dòng)父進(jìn)程,報(bào)錯(cuò)子進(jìn)程已存在
  • 可以使用mysqld_safe命令啟動(dòng) + 改造mysqld_safe腳本,實(shí)現(xiàn)【啟、停mysqld_safe進(jìn)程,不會(huì)影響mysqld進(jìn)程】。此時(shí)不要混合使用systemd啟動(dòng)數(shù)據(jù)庫(kù),需要維護(hù)這個(gè)特殊的mysqld_safe

分享到:
標(biāo)簽:MySQL
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定