Linux

CentOS Linux 設定 MySQL/MariaDB 出問題時自動重新啟動

這裡介紹如何在 CentOS Linux 中設定 systemd,讓 MySQL/MariaDB 資料庫在不正常停止時可以自己重新啟動。

自己用 VPS 架設網站的話,網頁伺服器與資料庫的維護都要自己處理,在 CentOS Linux 中的 MariaDB 資料庫預設在安裝好之後,雖然可以正常使用,但是如果系統因為某些原因(例如記憶體不足)造成 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

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Recent Posts

光陽 KYMCO GP 125 機車接電發動、更換電瓶記錄

本篇記錄我的光陽 KYMCO ...

1 年 ago

[開箱] YubiKey 5C NFC 實體金鑰

本篇是 YubiKey 5C ...

2 年 ago

[DIY] 自製竹火把

本篇記錄我拿竹子加上過期的苦茶...

2 年 ago