教你輕松正確掌握 軟件測試開(kāi)發(fā)技術(shù)之MySQL服務(wù)器關(guān)機進(jìn)程 MySQL數據庫
關(guān)鍵字:MySQL服務(wù)器關(guān)機進(jìn)程服務(wù)器關(guān)閉進(jìn)程可以概括為:
1.啟動(dòng)關(guān)閉進(jìn)程
2.服務(wù)器根據需要創(chuàng )建關(guān)閉線(xiàn)程
3.服務(wù)器停止接收新連接
4.服務(wù)器終止當前的活動(dòng)
5.存儲引擎被停掉或關(guān)閉
6.服務(wù)器退出
下面是更詳細的描述:
1.啟動(dòng)關(guān)閉進(jìn)程
可以用多種方法啟動(dòng)服務(wù)器的關(guān)閉。例如,擁有SHUTDOWN權限的用戶(hù)可以執行mysqladmin shutdown命令。mysqladmin可以用于所有支持MySQL的平臺上。其它操作系統相關(guān)的關(guān)閉開(kāi)始方法還可能有:在Unix中,當接收到SIGTERM信號后,服務(wù)器關(guān)閉。對于在Windows中作為服務(wù)運行的服務(wù)器,當服務(wù)管理器讓它關(guān)閉時(shí),則關(guān)閉。
2.服務(wù)器根據需要創(chuàng )建關(guān)閉線(xiàn)程
根據開(kāi)始關(guān)閉的方式,服務(wù)器可以創(chuàng )建線(xiàn)程來(lái)處理關(guān)閉進(jìn)程。如果客戶(hù)端需要關(guān)閉,則創(chuàng )建關(guān)閉線(xiàn)程。如果收到SIGTERM信號后關(guān)閉,信號線(xiàn)程可以自己關(guān)閉,或者創(chuàng )建單獨的線(xiàn)程來(lái)完成。如果服務(wù)器嘗試創(chuàng )建關(guān)閉線(xiàn)程而不能創(chuàng )建(例如,如果內存被耗盡),它在錯誤日志中給出診斷消息:
Error: Can’t create thread to kill server
3.服務(wù)器停止接收新連接
在關(guān)閉過(guò)程中要想防止啟動(dòng)新活動(dòng),服務(wù)器停止接收新的客戶(hù)端連接。它將關(guān)閉它幀聽(tīng)的網(wǎng)絡(luò )連接:TCP/IP端口、Unix套接字文件、Windows命名管道和在Windows中的共享內存。
4.服務(wù)器終止當前的活動(dòng)
對于每個(gè)與客戶(hù)端連接相關(guān)的線(xiàn)程,與客戶(hù)端的連接被中斷,線(xiàn)程被標記為“殺掉的”。當線(xiàn)程注意到此類(lèi)標記后則線(xiàn)程終止?臻e連接的線(xiàn)程很快終止。當前正處理查詢(xún)的線(xiàn)程定期檢查它們的狀態(tài),終止的時(shí)間較長(cháng)。關(guān)于線(xiàn)程終止的詳細信息,參見(jiàn)13.5.5.3節,“KILL語(yǔ)法”,特別是關(guān)于對MyISAM表的殺掉的REPAIR TABLE或OPTIMIZE TABLE操作。
對于有打開(kāi)事務(wù)的線(xiàn)程,事務(wù)被回滾。請注意如果某個(gè)線(xiàn)程正在更新非事務(wù)表,多行UPDATE或INSERT等操作會(huì )使表部分更新,因為操作在完成前會(huì )終止。
如果服務(wù)器是主復制服務(wù)器,與當前連接的從服務(wù)器相關(guān)的線(xiàn)程的處理方式同其它客戶(hù)端線(xiàn)程。即每個(gè)線(xiàn)程被標記為殺掉的,在下次檢查他的狀態(tài)后會(huì )退出。
如果服務(wù)器是從復制服務(wù)器,在客戶(hù)端線(xiàn)程標記為殺掉的之前,激活的I/O和SQL線(xiàn)程被停止。SQL線(xiàn)程允許先結束它當前的語(yǔ)句(以避免造成復制問(wèn)題)然后停止。如果此時(shí)SQL線(xiàn)程正位于事務(wù)中部,事務(wù)則 回滾。
5.存儲引擎被停掉或關(guān)閉
在該階段,表緩存被清空,所有打開(kāi)的表被關(guān)閉。
每個(gè)存儲引擎執行它管理的表需要的任何動(dòng)作。例如,MyISAM清空任何掛起的表索引寫(xiě)操作。InnoDB將它的緩沖池清空到硬盤(pán)上(除非innodb_fast_shutdown為2),將當前的LSN寫(xiě)入表內,并終止自己的內部線(xiàn)程。
6.服務(wù)器退出
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/