前一陣子發現我的網站中的MySQL處理程序偶爾會因為某些目前我還沒有確定的原因而遭到Linux核心程序把它停止,一旦它被停止執行時,顯然地在該網站中的WordPress以及其它CMS作業系統也就沒有辦法正常運作了。當然前提是找出該程序被停止的原因,但是在此之前,如何讓MySQL一旦被停止時,又可以把它重新啟動呢?
在筆者使用的Ubuntu作業系統中有一個叫做upstart的功能,可以設定讓被終止的程序可以自動重新啟動,但是它涉及到系統層級的設定。如果想要在使用者層級中做這件事(不過還是要使用root帳號權限啦),則可以先編寫一陣檢查MySQL是否在正常運作中的Python程式,如下:

#!/usr/bin/python
import subprocess
import os
msgs = subprocess.Popen("ps ax | grep mysql", shell=True, stdout=subprocess.PIPE).stdout.read()
lines = msgs.count('/usr/sbin/mysqld')
if lines == 0:
        os.system('service mysql start')

然後再使用「crontab -e」這個指令,加入以下的排程,每10分鐘執行一次檢測即可。

*/10 * * * * /root/chkmysql.py

經過以上的安排,可以確保MySQL程序的中斷時間不會超過10分鐘。