讓 MySQL / MariaDB 出現問題無法連上時自動重開
建立資料庫連線時發生錯誤 Error establishing a database connection |
如果直接嘗試使用 mysql 指令登入,則會看到這個錯誤訊息:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)也就是說, /var/run/mysqld/mysqld.sock 是消失不見了。
這時,我們要做的,是讓資料庫重開,樣我們可以重新連上,但每次都要人手發現問題並重開真是一個很蠢的方法。為此我決定要寫一個 script ,它在不增加 mysqld 工作量的情況下也可以在發現問題後自動重開資料庫。
systemctl status mysql | grep running || systemctl restart mysql
如果你的電腦並不是使用 systemd ,可以改成用 service 。
service mysql status | grep running || service mysql restart ## 用了上面的 systemctl 方法就不用這個
這個 script 只是在確定出問題後重開 mysql,但我們會希望可以進一步讓它自動執行,於是我們可以使用 crontab,首先切換成 root,然後執行。
sudo -i crontab -e接著把這行加到最底,代表每分鐘要檢查一次。
* * * * * systemctl status mysql | grep running || systemctl restart mysql
完成,這樣資料庫再失效時,就可以在 1 分鐘內自動發現並重啓了。
留言
張貼留言