首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 服務器關機流程深度解析:六大階段詳解

     編輯:MySQL 資料庫相關知識

MySQL 服務器關機流程概覽

MySQL 服務器的關閉並非瞬間發生,而是經過六個嚴謹階段,確保數據完整性與資源正確釋放。理解這一流程,有助於 DBA 排查關機異常、優化重啟策略。

階段一:啟動關閉程序

關閉可由多種方式觸發:

  • 擁有 SHUTDOWN 權限的用戶執行 mysqladmin shutdown(跨平台通用)。
  • Unix 系統接收 SIGTERM 訊號。
  • Windows 服務模式下,服務管理器發送停止指令。

階段二:建立關閉執行緒

根據觸發方式,服務器可能建立專屬執行緒處理關閉邏輯:

  • 客戶端請求關閉 → 建立關閉執行緒。
  • SIGTERM 訊號 → 訊號執行緒自行處理或另建執行緒。
  • 若無法建立執行緒(如記憶體耗盡),錯誤日誌記錄:Error: Can't create thread to kill server。

階段三:停止接受新連線

為防止新活動產生,服務器關閉所有監聽端點:TCP/IP 埠、Unix Socket 檔、Windows 命名管道、共享記憶體。

階段四:終止當前活動

  • 每個客戶端連線執行緒被標記為「殺掉」(Killed),斷開連線。閒置執行緒秒級終止;執行查詢的執行緒定期檢查狀態,終止較慢。
  • 開啟事務的執行緒:事務回滾。非事務表的多行 UPDATE/INSERT 可能導致部分更新。
  • 主庫複制:從庫連線執行緒視同一般客戶端處理。
  • 從庫複制:優先停止 I/O 與 SQL 執行緒。SQL 執行緒允許完成當前語句再停,若處於事務中則回滾。

階段五:關閉儲存引擎

  • 清空表快取,關閉所有打開的表。
  • 各引擎執行專屬清理:MyISAM 刷新掛起的索引寫入;InnoDB 將緩衝池刷入磁碟(除非 innodb_fast_shutdown=2),寫入當前 LSN,終止內部執行緒。

階段六:服務器退出

所有資源釋放完畢,進程結束。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved