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

深入解析 MySQL 伺服器關機流程六大階段

     編輯:MySQL 資料庫相關知識

MySQL 伺服器的關機流程可分為六個關鍵階段,理解這些階段有助於資料庫管理員進行優雅關機、排查關機異常以及規劃維護窗口。

第一階段:啟動關機程序

關機可透過多種方式觸發:

  • 擁有 SHUTDOWN 權限的使用者執行 mysqladmin shutdown
  • Unix 系統接收到 SIGTERM 訊號
  • Windows 服務管理器要求服務停止

第二階段:建立關機執行緒

根據觸發方式,伺服器可能建立專門執行緒處理關機:

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

第三階段:停止接受新連線

為防止新活動啟動,伺服器關閉所有監聽介面:

  • TCP/IP 埠
  • Unix Socket 檔案
  • Windows 命名管道
  • Windows 共享記憶體

第四階段:終止現有活動

對每個用戶端連線執行緒:

  • 中斷連線,標記為「killed」
  • 閒置連線快速終止
  • 執行查詢的執行緒定期檢查狀態,終止較慢
  • 開啟交易的執行緒 → 交易回滾
  • 非交易表更新操作可能導致資料部分更新

複寫相關處理:

  • 主伺服器:從伺服器連線執行緒視同一般用戶端處理
  • 從伺服器:先停止 I/O 和 SQL 執行緒,SQL 執行緒完成當前陳述式後停止,若在交易中則回滾

第五階段:關閉儲存引擎

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

第六階段:伺服器退出

完成所有清理工作後,伺服器進程結束。

掌握關機流程細節,有助於制定備份策略、排查資料一致性問題,以及規劃零停機維護作業。

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