解決阿里雲VPS伺服器mysql自動關閉的問題
因為對伺服器能力的需求並不高,所以買的VPS的配置是1G內存,但最近可能因為日積月累的緣故,近期出現過兩次mysql自動關閉的情況。
第一次發現後以為機器某些緣故重啟,沒仔細查就直接重新啟動mysql完事,沒想到近期又發生了一次,如果第一次是偶然,第二次一定是有一些原因的。
對這個事情的處理考慮之一是考慮是否做一個守護進程,當發現沒有mysql進程的時候自動重啟mysql服務,但再想想這個方法是不太負責的,因為根本不知道什麼原因mysql被關閉,而只是在關閉的時候重新啟動,屬於治標不治本的方法。
因此求助於google,發現很可能和下面文章描述的原因是一樣的,簡單來說,是因為mysql佔用內存太多,導致被系統強行殺掉進程。
Linux伺服器mysql,nginx等自動停止的排查,以及解決方法 | 極安全-JiSec
解決方案之一自然是升級伺服器配置,但對於我目前使用的情況來說,顯然沒有太大必要,因此考慮解決方案之二,即通過開啟虛擬內存(swap)來解決問題,因為虛擬內存是在內存不足時,用硬碟來作為內存使用,顯然可見的缺點是當發生物理內存不足而使用硬碟的虛擬內存時,內存的I/O效率會受到一定影響。
但這個對我目前來說,是完全可以接受的。從原始文章中摘錄步驟如下:
1、創建用於交換分區的文件
#dd if=/dev/zero of=/mnt/swap bs=block_size count=number_of_block
註:block_size、number_of_block 大小可以自定義,比如bs=1M count=1024 代表設置1G大小swap分區
2、設置交換分區文件#mkswap /mnt/swap
3、立即啟用交換分區文件#swapon /mnt/swap
如果在/etc/rc.local中有swapoff -a 需要修改為swapon -a
4、設置開機時自啟用swap分區
需要修改文件/etc/fstab中的swap行。
添加 /mnt/swap swap swap defaults 0 0
註:/mnt/swap 路徑可以修改,可以根據創建的swap文件具體路徑來配置。
設置後可以執行free -m命令查看效果
按照上述方法設置後,重新啟動mysql服務,至今為止暫未遇到mysql關閉的問題。
特記錄。
(完)
推薦閱讀:
※mysql如何優化like %關鍵字 查詢?
※MySQL基礎入門——MySQL與R語言、Python交互
※學習 Oracle 和 MySQL 哪個更有前途?
※MySQL訓練——SUM and COUNT@sqlzoo.net