亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

如果你用“重啟MySQL服務”作為關鍵詞搜索,可以找到不少匹配的文章。那么我為什么會想到又寫一篇呢?如果你在看了別處的文章后仍然有些疑問,那么,也許我的這篇能幫助你解答部分問題。

下面是正文。

我們都不希望重啟數據庫服務。但偶爾會遇到需要重啟的時候。

重啟MySQL服務,可以使用操作系統提供的服務重啟方法。比如在linux類系統中使用service 或 systemctl命令來重啟。

service mysqld restart
# OR
systemctl restart mysqld

或者在windows系統中通過服務管理界面來重啟。

那么,操作系統重啟MySQL服務是怎么完成的呢?或者,如果我們在做一些實驗,安裝MySQL時沒有安裝相應的服務腳本,這時,我們就需要自己來完成這個過程。

MySQL服務的重啟,可以分為兩個步驟。第一,關閉當前的服務進程。第二,啟動服務進程。

要關閉服務進程,有兩種方法。

第一種方法是,使用有關閉服務權限的用戶,通過客戶端建立連接,然后執行 shutdown 命令。

第二種方法是(僅限于Linux系統),向服務進程發送SIGTERM信號。命令如下:

#shell
cat /path/to/mysqld.pid | xargs kill -SIGTERM

也就是找到當前mysql服務進程的pid,然后向它發送SIGTERM信號。進程在收到了信號后,開始執行和收到了shutdown命令相同的關閉過程。它會先關閉網絡連接,然后把未完成的操作執行完,回滾未完成的事務。因此,雖然發送信號的過程很快就會執行完成,但是接收信號后執行關閉的過程則需要花費幾秒到幾十秒或更長的時間。

網絡上可以看到給進程發送的信號為9而不是SIGTERM。信號9為SIGKILL,會立即中止進程,數據庫服務進程會存在未完成的操作,在進程再次啟動時,會執行修復的過程。據說,這種做法有一定的概率可能會損壞數據文件而導致修復失敗。因此,若非別無選擇,不要使用SIGKILL來結束數據庫服務進程。

啟動服務

#shell
/path/to/mysqld_safe &

至此,基本的命令部分介紹完畢。

有時候,比如我們是在做實驗,需要反復或定期重啟數據庫服務,因此希望把上述過程變成一個可以自動執行的腳本。這其中存在的困難是,如何判定數據庫服務進程收到信號后的關閉過程已經完成了?

有兩種方法,一種是每隔一段時間在數據庫日志文件的結尾處查找表示進程結束的關鍵詞。

tail -5 /path/to/mysql.log | grep -v grep | grep 'mysqld: Shutdown complete'

另一種是每隔一段時間查找mysql的服務進程,如果找不到,就說明已關閉。

ps -ef | grep -v grep | grep 'bin/mysqld'

有的朋友可能對“每隔一段時間”該怎么寫成腳本有疑問。下面這段代碼會持續檢查mysqld進程是否存在,如果存在則睡眠5秒后再次檢查,直到找不到mysqld進程。

while ps -ef | grep -v grep | grep 'bin/mysqld'
do
  sleep 5s
 done

分享到:
標簽:MySQL
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定