文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手冊頁 (TGZ) - 258.2Kb
手冊頁 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  伺服器關機程序

7.1.19 伺服器關機程序

伺服器關機程序如下:

  1. 啟動關機程序。

    這可以透過幾種方式啟動。例如,具有 SHUTDOWN 權限的使用者可以執行 mysqladmin shutdown 命令。mysqladmin 可以在 MySQL 支援的任何平台上使用。其他特定於作業系統的關機啟動方法也是可能的:當伺服器收到 SIGTERM 訊號時,它會在 Unix 上關機。在 Windows 上以服務執行的伺服器會在服務管理員告知關機時關機。

  2. 如果需要,伺服器會建立關機執行緒。

    根據關機的啟動方式,伺服器可能會建立一個執行緒來處理關機程序。如果關機是由用戶端請求的,則會建立一個關機執行緒。如果關機是收到 SIGTERM 訊號的結果,則訊號執行緒可能會自行處理關機,或者可能會建立一個單獨的執行緒來執行此操作。如果伺服器嘗試建立關機執行緒但無法建立(例如,如果記憶體耗盡),它會發出診斷訊息,該訊息會出現在錯誤日誌中。

    Error: Can't create thread to kill server
  3. 伺服器停止接受新連線。

    為了防止在關機期間啟動新的活動,伺服器會停止接受新的用戶端連線,方法是關閉它通常偵聽連線的網路介面處理程式:TCP/IP 連接埠、Unix Socket 檔案、Windows 具名管道,以及 Windows 上的共用記憶體。

  4. 伺服器終止目前的活動。

    對於每個與用戶端連線相關聯的執行緒,伺服器會中斷與用戶端的連線,並將執行緒標記為已終止。當執行緒注意到它們被標記時,它們就會死亡。閒置連線的執行緒會快速死亡。目前正在處理陳述式的執行緒會定期檢查其狀態,並需要較長的時間才能死亡。有關執行緒終止的其他資訊,請參閱 章節 15.7.8.4,「KILL 陳述式」,特別是關於在 MyISAM 表格上終止 REPAIR TABLEOPTIMIZE TABLE 操作的指示。

    對於具有開啟交易的執行緒,交易會回滾。如果執行緒正在更新非交易表格,則多列 UPDATEINSERT 等操作可能會使表格部分更新,因為操作可能會在完成前終止。

    如果伺服器是複寫來源伺服器,它會將與目前連線的複本相關聯的執行緒視為其他用戶端執行緒。也就是說,每個執行緒都會被標記為已終止,並在下次檢查其狀態時結束。

    如果伺服器是複本伺服器,它會在將客戶端執行緒標記為已終止之前,先停止複製 I/O 和 SQL 執行緒(如果它們正在活動)。SQL 執行緒允許完成其當前語句(以避免造成複製問題),然後停止。如果 SQL 執行緒在此時處於交易中間,則伺服器會等待直到當前的複製事件群組(如果有的話)完成執行,或者直到使用者發出 KILL QUERYKILL CONNECTION 語句。另請參閱 第 15.4.2.5 節「STOP REPLICA 語句」。由於非交易性語句無法回滾,為了保證當機安全的複製,應該只使用交易性表格。

    注意

    為了保證複本上的當機安全,您必須啟用 --relay-log-recovery 選項來執行複本。

    另請參閱 第 19.2.4 節「中繼日誌和複製元數據儲存庫」

  5. 伺服器會關閉或關閉儲存引擎。

    在此階段,伺服器會清除表格快取並關閉所有開啟的表格。

    每個儲存引擎都會執行它所管理的表格所需的任何操作。InnoDB 會將其緩衝池刷新到磁碟(除非 innodb_fast_shutdown 為 2),將目前的 LSN 寫入表空間,並終止其自身的內部執行緒。MyISAM 會刷新表格的任何擱置索引寫入。

  6. 伺服器會退出。

為了向管理程序提供資訊,伺服器會傳回下列清單中描述的其中一個結束代碼。括號中的短語表示 systemd 針對使用 systemd 管理伺服器的平台,對該代碼所採取的動作。

  • 0 = 成功終止(不重新啟動)

  • 1 = 終止失敗(不重新啟動)

  • 2 = 終止失敗(重新啟動)