這裡介紹如何在 CentOS Linux 中設定 systemd,讓 MySQL/MariaDB 資料庫在不正常停止時可以自己重新啟動。
自己用 VPS 架設網站的話,網頁伺服器與資料庫的維護都要自己處理,在 CentOS Linux 中的 MariaDB 資料庫預設在安裝好之後,雖然可以正常使用,但是如果系統因為某些原因(例如記憶體不足)造成 MariaDB 資料庫服務中止時,它是不會自動重新啟動的,也就是說如果 MariaDB 不小心停止,整個網站就停擺了。
如果要讓 CentOS Linux 中的 MariaDB 服務在停止時,可以自動嘗試重新啟動的話,可以修改一下 systemd
的 MariaDB 啟動設定檔。
CentOS Linux 7 中 systemd
的 MariaDB 啟動設定檔放在 /etc/systemd/system/multi-user.target.wants/mariadb.service
,不過這個檔案是一個連結檔,它連結到系統上預設的設定檔,系統在更新時會將其內容覆蓋掉,所以不建議直接修改這個檔案的內容。
比較好的作法是在 /etc/systemd/system/mariadb.service.d/
這個目錄中(若不存在則自己新增),新增一個 restart.conf
設定檔,將設定寫在其中:
[Service] Restart=always RestartSec=3
這裡我們將 Restart
設定為 always
,代表只要服務停止就自動重新啟動,而 RestartSec
則是間隔秒數。
設定好之後,必須讓 systemd
重新載入設定值:
sudo systemctl daemon-reload
接著重新啟動 MariaDB 服務:
sudo systemctl restart mariadb
確認 MariaDB 服務有正常啟動:
sudo systemctl status mariadb
設定好之後,我們可以手動把 MariaDB 的行程砍掉,模擬 MariaDB 資料庫不正常中止,看看 systemd
會不會自動重新啟動 MariaDB 服務。
首先找出 MariaDB 服務的行程 ID:
# 找出 MariaDB 服務的行程 ID ps -ef | grep mariadb
砍掉 MariaDB 服務:
kill 行程ID
等待三秒鐘之後,再看看 MariaDB 是否有重新啟動:
# 檢查 MariaDB 是否有重新啟動 ps -ef | grep mariadb
參考資料:serverfault