最近,我在調試PostgreSQL 9.2數據庫損壞問題(在Solaris上,但我懷疑它是否重要),並且我發現如果客戶端在事務中間死亡,然後通過執行關閉PostgreSQL,我們可以可靠地重現它pkill postgres
(它基本上發送SIGTERM
到每個運行的postgres
進程)。如果我們做了pkill -QUIT postgres
來發送SIGQUIT
,那麼數據庫會乾淨地關閉並且不會發生損壞。安全使用SIGTERM殺死postgres進程?
根據PostgreSQL 9.2 docs,我認爲SIGTERM
應該是數據庫服務器預期的100%,那爲什麼不這樣關閉呢?它是PostgreSQL中的一個錯誤,還是我可以做一些事情(配置等),這會讓腐敗發生?
(1)這是一個更適合dba.stackexchange.com的問題; (2)什麼是確切版本,9.2。什麼? (3)你在談論什麼是「腐敗」?什麼錯誤,日誌,症狀等? (4)任何非安全選項,如禁用fync或full_page_writes? – MatheusOl 2015-04-04 14:16:44