★PostgreSQLカンファレンス2021 11月12日開催/チケット販売中★
他のバージョンの文書 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

3.6. サーバーのシャットダウン

データベースサーバをシャットダウンする方法はいくつかあります。サーバプロセスに異なるシグナルを送ることで、シャットダウンの方法を制御します。

SIGTERM

SIGTERMを受け取った後で、postmasterは新しい接続を禁止しますが、すでに存在するバックエンドは通常どおり動作させます。すべてのバックエンドが通常に終了するまではシャットダウンしません。これがスマートシャットダウンです。

SIGINT

postmasterは新しい接続を禁止しすべての存在するバックエンドにSIGTERMを送り、この結果バックエンドは現在のトランザクションをアボートし、即座に終了します。そして postmaster はバックエンドの終了を待って、最後にシャットダウンします。これが高速シャットダウンです。

SIGQUIT

これは即時シャットダウンと呼ばれ、postmaster にすべてのバックエンドに SIGQUIT を送らせ、(自らを正しくシャットダウンせずに) 即座に終了します。バックエンドは同様にSIGQUITを受け取ると同時に終了します。これは次の起動時に(WALログを再実行することで)リカバリをすることになります。これは緊急のときにのみ使うことを勧めます。

Important: postmasterをシャットダウンするためにはSIGKILLを使わない方がよいでしょう。それによって postmaster が共有メモリとセマフォを解放できなくなり、手動でその作業をしなければならなくなる可能性があります。

postmasterプロセスのPIDpsプログラムを使って見つけるか、もしくはデータディレクトリの中のファイルpostmaster.pidから見つけることができます。ですから、たとえば高速シャットダウンをするためには下記のようになります。

$ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`

プログラムpg_ctlはpostmasterのシャットダウンのもっと便利なインターフェイスを提供するシェルスクリプトです。