There are several ways to shut down the database server. You control
the type of shutdown by sending different signals to the server
process.
- SIGTERM
After receiving SIGTERM, the postmaster
disallows new connections, but lets existing backends end their
work normally. It shuts down only after all of the backends
terminate normally. This is Smart
Shutdown.
- SIGINT
The postmaster disallows new connections and sends all existing
backends SIGTERM, which will cause them
to abort their current transactions and exit promptly. It then
waits for the backends to exit and finally shuts down. This is
Fast Shutdown.
- SIGQUIT
This is Immediate Shutdown, which
will cause the postmaster to send a
SIGQUIT to all backends and exit
immediately (without properly shutting itself down). The backends
likewise exit immediately upon receiving
SIGQUIT. This will lead to recovery (by
replaying the WAL log) upon next start-up. This is recommended
only in emergencies.
Important: It is best not to use SIGKILL to shut down
the postmaster. This will prevent the postmaster from releasing
shared memory and semaphores, which may then have to be done by
manually.
The
PID of the postmaster process can be found using the
ps program, or from the file
postmaster.pid in the data directory. So for
example, to do a fast shutdown:
$ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`
The program pg_ctl is a shell script
that provides a more convenient interface for shutting down the
postmaster.