CentOS 7下MySQL5.7.23的服務配置引數測試
CentOS 7預設安裝MySQL5.7.23,服務管理髮生了變化,從sysvinit(service mysql start)變化為systemd(systemctl start mysqld.service)
最近測試了下MySQL5.7.23的服務管理引數,測試主要涉及Restart ,RestartPreventExitStatus,RestartSec,StartLimitInterval四個服務啟動引數。
【服務啟動方式比較】
1、CentOS7下MySQL5.7.23預設引數下的服務啟動方式
MySQL crash、OOM、kill -9 pid三種情況下mysqld程序被終止,都會馬上重新啟動,間隔100ms
systemctl stop [email protected]不會自動重啟
2、CentOS6下MySQL5.6.21的服務啟動情況
MySQL crash、OOM crash和oom kill的是mysqld程序,由於存在mysqld_safe的守護程序,會自動重啟mysqld
對於kill -9的命令,如果只kill -9 mysqld程序,mysqld_safe守護程序會重啟mysqld,如果mysqld_safe也被kill掉,那麼mysqld就不會被拉起來
service mysql stop 不會自動重啟
【在CentOS 7下如何實現kill -9 mysqld
RestartPreventExitStatus= 中列出的退出碼或訊號永遠不會導致該服務被重啟
修改RestartPreventExitStatus=1 SIGKILL,增加kill -9對應的訊號SIGKILL
測試kill -9,mysqld程序不會自動重啟
測試OOM,mysqld程序也不會自動重啟
原因是由於OOM在kill程序時傳的也是SIGKILL的訊號
【需要關注的服務配置的兩個引數】
1、RestartSec設定在重啟服務(Restart)前暫停多長時間,預設值是100ms,就是mysqld程序OOM或kill後等待100ms就會馬上重啟
我們MHA中配置的ping_interval=10,意思是MHA Manager每10秒 ping一次master,嘗試3次失敗後,進行failover
這個引數需要評估下,是否做設定,比如如果希望發生上面異常,能被MHA檢測到,那麼最保險的是間隔30秒再重啟mysql程序,需要指定RestartSec=30
2、StartLimitInterval
設定單元的啟動頻率限制。 預設一個單元在10秒內最多允許啟動5次。建議修改為StartLimitInterval=0,無限制重啟。