MySQL的伺服器關機進程

來源:互聯網
上載者:User

伺服器關閉進程可以概括為:

1.啟動關閉進程

2.伺服器根據需要建立關閉線程

3.伺服器停止接收新串連

4.伺服器終止當前的活動

5.儲存引擎被停掉或關閉

6.伺服器退出

下面是更詳細的描述:

1.啟動關閉進程

可以用多種方法啟動伺服器的關閉。例如,擁有SHUTDOWN許可權的使用者可以執行MySQLadmin shutdown命令。mysqladmin可以用於所有支援MySQL的平台上。其它作業系統相關的關閉開始方法還可能有:在Unix中,當接收到SIGTERM訊號後,伺服器關閉。對於在Windows中作為服務啟動並執行伺服器,當服務管理員讓它關閉時,則關閉。

2.伺服器根據需要建立關閉線程

根據開始關閉的方式,伺服器可以建立線程來處理關閉進程。如果用戶端需要關閉,則建立關閉線程。如果收到SIGTERM訊號後關閉,訊號線程可以自己關閉,或者建立單獨的線程來完成。如果伺服器嘗試建立關閉線程而不能建立(例如,如果記憶體被耗盡),它在錯誤記錄檔中給出診斷訊息:

Error: Can't create thread to kill server

3.伺服器停止接收新串連

在關閉過程中要想防止啟動新活動,伺服器停止接收新的用戶端串連。它將關閉它幀聽的網路連接:TCP/IP連接埠、Unix通訊端檔案、Windows具名管道和在Windows中的共用記憶體。

4.伺服器終止當前的活動

對於每個與用戶端串連相關的線程,與用戶端的串連被中斷,線程被標記為“殺掉的”。當線程注意到此類標記後則線程終止。空閑串連的線程很快終止。當前正處理查詢的線程定期檢查它們的狀態,終止的時間較長。關於線程終止的詳細資料,參見13.5.5.3節,“KILL文法”,特別是關於對MyISAM表的殺掉的REPAIR TABLE或OPTIMIZE TABLE操作。

對於有開啟事務的線程,事務被復原。請注意如果某個線程正在更新非事務表,多行UPDATE或INSERT等操作會使表部分更新,因為操作在完成前會終止。

如果伺服器是主複製伺服器,與當前串連的從伺服器相關的線程的處理方式同其它用戶端線程。即每個線程被標記為殺掉的,在下次檢查他的狀態後會退出。

如果伺服器是從複製伺服器,在用戶端線程標記為殺掉的之前,啟用的I/O和SQL線程被停止。SQL線程允許先結束它當前的語句(以避免造成複製問題)然後停止。如果此時SQL線程正位於事務中部,事務則 復原。

5.儲存引擎被停掉或關閉

在該階段,表緩衝被清空,所有開啟的表被關閉。

每個儲存引擎執行它管理的表需要的任何動作。例如,MyISAM清空任何掛起的表索引寫操作。InnoDB將它的緩衝池清空到硬碟上(除非innodb_fast_shutdown為2),將當前的LSN寫入表內,並終止自己的內部線程。

6.伺服器退出

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.