有好几种关闭数据库服务器的方法,选哪个取决于你的需要.
区别是你给服务器进程发送什么样的信号.
-
SIGTERM
-
在收到
SIGTERM
信号后,postmaster不再允许新的联接,但是
允许所有活跃的后端完成他们的工作,只有在所有后端都结束
任务(通过客户端请求)后才关闭.
这是
Smart Shutdown(智能关闭)
.
-
SIGINT
-
postmaster 不再允许新的联接,向所有活跃后端发送
SIGTERM
,
(这样会让它们立刻退出),postmaster 等待子进程退出并关闭数据库.
这是
Fast Shutdown(快速关闭)
.
-
SIGQUIT
-
这是
Immediate Shutdown(立即关闭)
,
会令postmaster向所有后端发送
SIGQUIT
并且立即退出(而不会
妥善地关闭数据库系统).
后端在收到
SIGQUIT
之后会立即退出.
这样做会导致下次启动时的恢复(通过重放 WAL 日志).
我们推荐只在紧急的时候使用这个方法.
Caution
|
尽可能不要用
SIGKILL
关闭 postmaster.
这样会导致数据崩溃以及
阻止清理共享内存资源,那样你只能自己手工做这件事.
|
你可以用
ps
命令找出 postmaster
的
PID
,或者也可以从数据目录里的文件
postmaster.pid
里面找到.所以,举例来说,要做一次快速关闭:
$
kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`
程序
pg_ctl
是一个封装好了的脚本,
给这个功能提供了一个便利的手段.
|