Mysql

Ubuntu 18.04 伺服器上的 mysql.service 位置?

  • September 6, 2021

我需要編輯mysql.service文件以使 MySQL 在崩潰時自動重啟。我正在使用大量庫存的 Ubuntu 18.04 伺服器安裝並遵循這些說明https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04庫存 MySQL 安裝。

我擔心的是我不確定在哪裡編輯mysql.service。如果我這樣做:

sudo updatedb
locate mysql.service

我明白了:

/etc/systemd/system/multi-user.target.wants/mysql.service
/lib/systemd/system/mysql.service
/var/lib/lxcfs/cgroup/blkio/system.slice/mysql.service
/var/lib/lxcfs/cgroup/cpu,cpuacct/system.slice/mysql.service
/var/lib/lxcfs/cgroup/devices/system.slice/mysql.service
/var/lib/lxcfs/cgroup/memory/system.slice/mysql.service
/var/lib/lxcfs/cgroup/name=systemd/system.slice/mysql.service
/var/lib/lxcfs/cgroup/pids/system.slice/mysql.service
/var/lib/systemd/deb-systemd-helper-enabled/mysql.service.dsh-also
/var/lib/systemd/deb-systemd-helper-enabled/multi-user.target.wants/mysql.service

這很奇怪,因為我習慣於 systemd.service文件位於/etc/systemd/system. 由於路徑相似,我傾向於認為這/lib/systemd/system/mysql.service可能是我應該編輯的文件。但是,如果有人可以提供有關以下內容的一些額外資訊,那就太好了:

  1. /lib/systemd/system/mysql.service我應該編輯的文件嗎?
  2. 為什麼有這麼多mysql.service文件?這似乎會引起混亂。
  3. 是什麼multi-user.target.wants?我mysql.service也應該更改那裡的文件嗎?
  4. 一些簡單的Google搜尋顯示它lxcfs是 Linux Containers 的縮寫,我應該更改其中的任何mysql.service文件嗎?

/lib/systemd/system中的文件不應由管理員直接編輯,應保持原樣。這些文件屬於已安裝的軟體包,更新和/或更改可能會破壞事情。


要像文件一樣修改現有systemd文件和配置.service,請systemd提供*/etc/systemd/system路徑,該路徑會覆蓋**/lib/systemd/system*中的文件和設置。

因此,如果您有.service如下兩個文件,

/etc/systemd/system/mysql.service
/lib/systemd/system/mysql.service

輸入命令時將使用位於*/etc/systemd/system/mysql.service*systemctl [start|stop|enable|disable] mysql.service的那個。


此外,systemd提供插入式“.d”目錄,允許僅.service在*/lib/systemd/system中更改或添加文件的單個選項。您可以使用.d*systemctl edit mysql.service來創建這樣一個插入式目錄。 您需要輸入的只是部分(例如, , … )和您要更改的選項。 由於您要更改重新啟動行為,請執行 a並輸入以下行。
[Service]``[Unit]
systemctl edit mysql.service

[Service]
Restart=on-failure

這將創建一個文件夾

/etc/systemd/system/mysql.service.d

和覆蓋文件

/etc/systemd/system/mysql.service.d/override.conf

其中包含您之前輸入的行。您也可以手動創建文件和文件夾。

我更喜歡這種方法而不是複制整個.service文件,因為包更新會帶來變化,你只需要處理你改變的單個更改。


無論如何,在使用systemd和更改配置文件時,必須輸入

systemctl daemon-reload 

啟動更改。


不要更改任何其他lxcfs相關的東西。這multi-user.target.wants只是將要為目標systemd啟動的服務組合在一起的一種組織方法。multi-userTargets insystemd替換了舊init 0 1 2 3 4 5 6方法。

一些雙重mysql.service文件將是指向您的實際.service文件的符號連結。


另請參閱以下手冊頁。

man systemctl
man systemd.unit
man systemd.service
man systemd.target

引用自:https://serverfault.com/questions/946668