透過systemctl管理mysqld服務


1. 背景

CentOS 7.x 之前的版本,系統啟動時,第一支呼叫的程序是 init ,然后 init 去喚起所有的系統所需要的服務,無論是本地服務還是網絡服務。所有的服務啟動腳本都放置於 /etc/init.d 下面,基本上都是使用 bash shell script 所寫成的腳本程序。

從CentOS 7.x 以后,Red Hat 放棄了 init 啟動腳本的方法,改用systemd 這個啟動服務管理機制。

2.systemctl管理服務的好處

  • 平行處理所有服務,加速開機流程

    舊的init 啟動腳本是【一項一項任務依序啟動】的模式,因此不相依的服務也是一個一個的等待。但目前我們的硬件主機系統與操作系統幾乎都支持多核心結構了,systemd可以讓所有的服務同時啟動,系統啟動的速度變快了。
  • 一經要求就相應的 on-demand 啟動方式

    System 全部就是僅有一直systemd 服務 搭配systemctl 指令來處理,無需其它的指令來支持。不想之前的啟動方式還要init,chkconfig,service…等指令。此外,systemd 由於常駐內存,因此任何要求(on-demand)都可以立即處理后續的daemon啟動的任務。
  • 服務相依性的自我檢查

    由於systemd可以自定義服務相依性的檢查,因此如果 B 服務是架構在 A服務上面的,那當你在沒有啟動 A 服務的情況下僅手動啟動 B 服務時,systemd 會自動幫你啟動A服務。這樣可以免去管理員一項一項去分析的麻煩。

3.Systemd啟動腳配置文件所在目錄

目錄 說明
/lib/system/system/

使用CentOS官方提供的軟件安裝后,默認的啟動腳本配置文件都放在這里,這里的數據盡量不要修改。要修改時,請到 /etc/system/system低下修改較佳。

/etc/system/system/ 管理員依據主機系統的需求所建立的執行腳本,其實這個目錄有點像之前的/etc/rc.d/rc5.d/Sxx 之類的功能。執行優先順序要比/run/system/system/ 高。

/run/system/system/

系統執行過程中所產生的服務腳本。

4.mysql服務

在之前的安裝中,我們一般都是 通過 support-files/mysql.server (單實例)、support-files/mysqld_multi.server (多實例)來配置服務。

例如 :https://www.cnblogs.com/xuliuzai/p/10078351.html

再如:https://www.cnblogs.com/xuliuzai/p/10732833.html

其實現管理mysql服務的腳本就是 在mysql.server、 mysqld_multi.server文件中。

腳本復雜並且修改比較困難。例如,我需要配置多實例,但不想修改既有的my.cnf 配置文件,如果新實例的文件名字命名為my3307.cnf,此時再用老的方法,去修改 mysql.server 就比較麻煩。

而如果用 system就比較簡單。

例如 ,定義一個測試服務為:mysql3307.service

 

[Unit]
Description=MySQL Server
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
Type=forking
TimeoutSec=0
PermissionsStartOnly=true
ExecStart=/data/mysql57/bin/mysqld --defaults-file=/etc/my3307.cnf --daemonize
LimitNOFILE = 65535
Restart=on-failure
RestartSec=3
RestartPreventExitStatus=1
PrivateTmp=false

 

此服務的其它的一些操作命令;

systemctl enable mysql3307.service  ---設置開啟自啟動

systemctl start mysql3307.service     ----開啟此服務

systemctl stop mysql3307.service    -----關閉此服務

systemctl status mysql3307.service -----查看服務狀態

 

注意 ; (1)/data/mysql57/bin/mysqld 路徑為 可執行文檔所在路徑;/etc/my3307.cnf 配置未見;

(2)Restart=on-failure 是決定 服務Failure 時,是否自動拉起;RestartSec=3 嘗試拉起間隔。

 

 

---------部分知識參考《鳥哥的Linux私房菜-基礎學習篇(第四版)》,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM