標籤:

解決阿里雲VPS伺服器mysql自動關閉的問題

因為自己有獨立博客、微信公眾號後台、手機app伺服器、VPN伺服器等方面需求,所以之前買過linode日本階段的vps,但不知道為什麼在公司訪問linode總是時斷時續,更換過一次ip好沒好幾天又恢復老樣子,因此又買了一台阿里雲的伺服器,並把一些服務遷移到了阿里雲的伺服器

因為對伺服器能力的需求並不高,所以買的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

TAG:MySQL | 阿里云 |