關閉mysql有很多方法,但是如何安全、緩和的關閉mysql不是每個人都知道的,下面 聯動北方 來總結一下mysql的幾種關閉方式和注意事項 關閉過程: 1、發起shutdown,發出SIGTERM信號 2、有必要的話,新建一個關閉線程(shutdownthread) 3、MySQLServer不再響應
關閉mysql有很多方法,但是如何安全、緩和的關閉mysql不是每個人都知道的,下面聯動北方來總結一下mysql的幾種關閉方式和注意事項
關閉過程:
1、發起shutdown,發出 SIGTERM信號
2、有必要的話,新建一個關閉線程(shutdown thread)
3、MySQL Server不再響應新的連接請求
4、逐漸關閉當前的連接、事務
5、MySQL Server進程關閉所有線程,關閉所有存儲引擎;
6、MySQL Server進程退出
關于KILL指令
從5.0開始,KILL 支持指定 CONNECTION | QUERY兩種可選項:
KILL CONNECTION和原來的一樣,停止回滾事務,關閉該線程連接,釋放相關資源;
KILL QUERY則只停止線程當前提交執行的操作,其他的保持不變;
提交KILL操作后,該線程上會設置一個特殊的 kill標記位。通常需要一段時間后才能真正關閉線程,因為kill標記位只在特定的情況下才檢查:
1、執行SELECT查詢時,在ORDER BY或GROUP BY循環中,每次讀完一些行記錄塊后會檢查 kill標記位,如果發現存在,該語句會終止;
2、執行ALTER TABLE時,在從原始表中每讀取一些行記錄塊后會檢查 kill 標記位,如果發現存在,該語句會終止,刪除臨時表;
3、執行UPDATE和DELETE時,每讀取一些行記錄塊并且更新或刪除后會檢查 kill 標記位,如果發現存在,該語句會終止,回滾事務,若是在非事務表上的操作,則已發生變更的數據不會回滾;
4、GET_LOCK() 函數返回NULL;
安全關閉MySQL幾點建議
想要安全關閉 mysqld 服務進程,建議按照下面的步驟來進行:
0、用具有SUPER、ALL等最高權限的賬號連接MySQL,最好是用 unix socket 方式連接;
1、在5.0及以上版本,設置innodb_fast_shutdown = 1,允許快速關閉InnoDB(不進行full purge、insert buffer merge),如果是為了升級或者降級MySQL版本,則不要設置;
2、設置innodb_max_dirty_pages_pct = 0,讓InnoDB把所有臟頁都刷新到磁盤中去;
3、設置max_connections和max_user_connections為1,也就最后除了自己當前的連接外,不允許再有新的連接創建;
4、關閉所有不活躍的線程,也就是狀態為Sleep 且 Time 大于 1 的線程ID;
參考鏈接:http://bbs.landingbj.com/t-0-247144-1.html
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com