您的位置:寻梦网首页编程乐园数据库PostgreSQL 7.2 Documentation

3.6. 关闭服务器

有好几种关闭数据库服务器的方法,选哪个取决于你的需要. 区别是你给服务器进程发送什么样的信号.

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 是一个封装好了的脚本, 给这个功能提供了一个便利的手段.