PostgreSQL關(guān)閉數(shù)據(jù)庫服務(wù)的三種模式
PostgreSQL 提供了三種關(guān)閉數(shù)據(jù)庫服務(wù)的不同方式,它們最終都是發(fā)送一個關(guān)閉信號到 postgres 主服務(wù)進(jìn)程。
智能關(guān)閉模式
智能關(guān)閉(Smart Shutdown)模式向 postgres 主服務(wù)進(jìn)程發(fā)送一個 SIGTERM 信號。此時服務(wù)器不允許新的客戶端連接,同時等待已有會話正常完成工作。當(dāng)所有會話都主動終止連接之后關(guān)閉服務(wù)。如果數(shù)據(jù)庫服務(wù)正在執(zhí)行恢復(fù)操作時發(fā)送了關(guān)閉命令,恢復(fù)操作和流復(fù)制都會等待所有常規(guī)會話終止后停止。
使用 pg_ctl 工具關(guān)閉數(shù)據(jù)庫服務(wù)的命令如下:
$ pg_ctl stop -m smart
其中,-m 參數(shù)用于指定關(guān)閉模式,smart 表示智能模式。
PostgreSQL 智能關(guān)閉模式類似于 Oracle 數(shù)據(jù)庫中的正常關(guān)閉(shutdown normal)模式。
快速關(guān)閉模式
快速關(guān)閉(Fast Shutdown)模式對應(yīng)的信號為 SIGINT。此時服務(wù)器不允許新的客戶端連接,同時向所有的服務(wù)進(jìn)程發(fā)送 SIGTERM 信號,回滾進(jìn)行中的事務(wù)并且強(qiáng)制斷開所有客戶端的連接,然后關(guān)閉數(shù)據(jù)庫。
使用 pg_ctl 工具快速關(guān)閉數(shù)據(jù)庫服務(wù)的命令如下:
$ pg_ctl stop -m fast $ pg_ctl stop
其中,fast 表示快速模式,它也是默認(rèn)模式。
PostgreSQL 快速關(guān)閉模式類似于 Oracle 數(shù)據(jù)庫中的立即關(guān)閉(shutdown immediate)模式。
立即關(guān)閉模式
第三種模式是立即關(guān)閉(Immediate Shutdown),對應(yīng)的系統(tǒng)信號為 SIGQUIT。
主服務(wù)器進(jìn)程向所有的子進(jìn)程發(fā)送 SIGQUIT 信號,如果 5 秒內(nèi)子進(jìn)程沒有終止,繼續(xù)發(fā)送立即終止的 SIGKILL 信號。當(dāng)所有子進(jìn)程退出后,主服務(wù)進(jìn)程立即終止,不會執(zhí)行常規(guī)的數(shù)據(jù)庫關(guān)閉流程。這種模式會導(dǎo)致下一次啟動數(shù)據(jù)庫服務(wù)時需要執(zhí)行恢復(fù)操作(重做 WAL 日志),只推薦在緊急情況下使用。
使用 pg_ctl 工具立即關(guān)閉數(shù)據(jù)庫服務(wù)的命令如下:
$ pg_ctl stop -m immediate
其中,immediate 表示立即模式。
PostgreSQL 快速關(guān)閉模式類似于 Oracle 數(shù)據(jù)庫中的立即關(guān)閉(shutdown abort)模式。
注意事項
三種關(guān)閉模式中,智能模式最安全,能夠確保數(shù)據(jù)的完整性和一致性;但是這種模式可能耗時較長,因為它需要等待客戶端主動斷開連接??焖倌J娇赡軐?dǎo)致事務(wù)的中斷,但不會導(dǎo)致數(shù)據(jù)不一致,優(yōu)點(diǎn)在于速度較快,一般情況下推薦使用這種模式。 立即模式速度最快,但是可能會導(dǎo)致數(shù)據(jù)不一致,再次啟動時可以通過 WAL 日志回放恢復(fù)到一致狀態(tài),只有在緊急情況或者其他模式無法關(guān)閉時推薦使用。
除了 Windows 之外的其他操作系統(tǒng)也可以直接使用 kill 命令發(fā)送信號關(guān)閉數(shù)據(jù)庫,例如:
$ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`
postmaster.pid 文件中存儲了主服務(wù)進(jìn)程(postgres)的 PID。
不建議使用 SIGKILL 信號關(guān)閉服務(wù),這種方式會阻止服務(wù)釋放共享內(nèi)存和信號量。而且,這種方式終止主服務(wù)器進(jìn)程時不會發(fā)送信息到子進(jìn)程,因此還需要手動關(guān)閉每個子進(jìn)程。
Oracle 數(shù)據(jù)庫還支持一種事務(wù)關(guān)閉(shutdown transactional)模式,不允許新客戶連接,但是會等待進(jìn)行中的事務(wù)完成提交后斷開客戶端連接,然后關(guān)閉數(shù)據(jù)庫。PostgreSQL 沒有這種對應(yīng)的關(guān)閉模式。
到此這篇關(guān)于PostgreSQL關(guān)閉數(shù)據(jù)庫服務(wù)的三種模式的文章就介紹到這了,更多相關(guān)PostgreSQL關(guān)閉數(shù)據(jù)庫服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
postgresql高級應(yīng)用之行轉(zhuǎn)列&匯總求和的實(shí)現(xiàn)思路
這篇文章主要介紹了postgresql高級應(yīng)用之行轉(zhuǎn)列&匯總求和的實(shí)現(xiàn)思路,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05淺談PostgreSQL的客戶端認(rèn)證pg_hba.conf
這篇文章主要介紹了淺談PostgreSQL的客戶端認(rèn)證pg_hba.conf,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01postgresql insert into select無法使用并行查詢的解決
這篇文章主要介紹了postgresql insert into select無法使用并行查詢的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01PostgreSQL 數(shù)據(jù)庫跨版本升級常用方案解析
這篇文章主要介紹了PostgreSQL 數(shù)據(jù)庫跨版本升級常用方案解析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03PostgreSQL 數(shù)據(jù)庫性能提升的幾個方面
PostgreSQL提供了一些幫助提升性能的功能。主要有一些幾個方面。2009-09-09