最近,我在调试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