透過systemctl管理mysqld服務

1. 背景

CentOS 7.x 以前的版本,系統啓動時,第一支呼叫的程序是 init ,而後 init 去喚起全部的系統所須要的服務,不管是本地服務仍是網絡服務。全部的服務啓動腳本都放置於 /etc/init.d 下面,基本上都是使用 bash shell script 所寫成的腳本程序。html

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

2.systemctl管理服務的好處

  • 平行處理全部服務,加速開機流程sql

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

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

    因爲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 (多實例)來配置服務。測試

例如 :http://www.javashuo.com/article/p-cnqcheku-ba.html操作系統

再如:http://www.javashuo.com/article/p-qwetcrri-k.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私房菜-基礎學習篇(第四版)》,謝謝!

相關文章
相關標籤/搜索