他のバージョンの文書 15 | 14 | 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

pg_ctl

Name

pg_ctl -- PostgreSQL サーバの起動、停止、再起動

Synopsis

pg_ctl start [-w] [-s] [-D datadir] [-l filename] [-o options] [-p path]

pg_ctl stop [-W] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ]

pg_ctl restart [-w] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-o options]

pg_ctl reload [-s] [-D datadir]

pg_ctl status [-D datadir]

説明

pg_ctlPostgreSQL バックエンドサーバである postmaster を起動、停止、再起動、あるいは起動中の postmaster の状態を表示するためのユーティリティです。postmasterは手動で起動することも可能ですが、pg_ctl はログ出力のリダイレクトや、ターミナルとプロセスグループからの的確な分離などの作業をカプセル化し、またどのように停止するかを管理する簡便オプションも提供します。

startモードで、新しいpostmasterが立ち上がります。サーバはバックグラウンドで起動され、標準入力は/dev/null に付随されます。標準出力と標準エラーは、-l オプションが使われた場合ログファイルに、そうでない場合はpg_ctl の標準出力(標準エラー出力ではありません)にリダイレクトされます。もしログファイルを指定しない場合、pg_ctlの標準出力は、ファイルにリダイレクトするか、例えばログ回転プログラムのような別プロセスにパイプで渡すべきです。そうしないと、postmasterは出力を(バックグラウンドから)制御ターミナルに書き出すので、シェルのプロセスグループから切り離せません。

stopモードは、指定されたデータディレクトリで稼働しているpostmasterを停止します。-m オプションで3つの異なる停止方式を選択することができます。 "Smart"モードは全てのクライアントが切断するまで待ちます。これはデフォルトです。"Fast"モードはクライアントが切断するまで待ちません。すべての実行中のトランザクションはロールバックされ、クライアントとの接続は強制的に切断され、その後データベースの停止が行なわれます。 "Immediate"モードは完全に停止することなく全てのサーバプロセスを中断します。この指定により、再起動時に回復処理が実行されることになります。

restart モードは停止の直後に効果的に起動を実行します。これは postmaster コマンドラインオプションの変更を可能にします。

reload モードは単に postmaster に SIGHUP シグナルを送り、(postgresql.confpg_hba.confなどの)設定ファイルを再度読み込みます。これにより、完全な再起動することなく設定ファイルのオプションの変更を反映することができます。

status モードは postmaster が起動しているかを確認し、起動していた場合は PID と、postmaster を起動する時に使われたコマンドラインオプションを表示します。

オプション

-D datadir

データベースファイルのファイルシステムでの場所を指定します。もしこれが省略されると、環境変数 PGDATA が使われます。

-l filename

サーバログ出力をfilenameに追加します。そのファイルが存在しない場合は作成されます。umaskは077に設定されるため、他のユーザからのログファイルへのアクセスはデフォルトでは許可されません。

-m mode

停止モードを指定します。modesmartfast、もしくは immediate、もしくはこれらの3つのうちのどれかの最初の文字になります。

-o options

直接 postmaster に渡されるオプションを指定します。

パラメータは通常、1つのグループとして渡ることを保障するために、単一もしくは二重引用符で囲まれています。

-p path

postmaster の実行プログラムの位置を指定します。デフォルトでは postmaster は pg_ctl と同じディレクトリ、そうでない場合は構築時に指定したインストールディレクトリとなります。このオプションは何か異例なことをしていてpostmasterが見つからないというようなエラーが出ない限り、使う必要はありません。

-s

エラーメッセージのみを表示し、その他の情報を表示しません。

-w

起動もしくは停止処理が終了するのを待ちます。60秒でタイムアウトします。停止処理のデフォルトです。

-W

起動もしくは停止が完了するのを待ちません。起動と再起動のデフォルトです。

ファイル

postmaster.opts.default がデータディレクトリにある場合、そのファイルの内容は -o オプションで上書きされていない限り postmaster へのオプションとして渡されます。

postmaster の起動

postmaster を起動するためには下記のようにします。

$ pg_ctl start

下記は postmaster が立ち上がるまでブロックをする postmaster の起動方法の例です。

$ pg_ctl -w start

ポート 5433 を使い fsync なしで起動する postmaster は下記を使います。

$ pg_ctl -o "-F -p 5433" start

postmaster の停止

$ pg_ctl stop

は postmaster を停止します。-mオプションを使うと どのようにバックエンドを停止させるかを制御できます。

postmaster の再起動

この手順はpostmasterを停止して起動させるのと同じですが、違うのは、pg_ctlが以前起動していたインスタンスに渡されていたコマンドラインオプションを保存し再利用することです。下記は postmasterを再起動するもっとも簡単な方法です。

$ pg_ctl restart

下記は postmasterの停止を待ってから立ち上げを行なう方法です。

$ pg_ctl -w restart

下記は、ポート 5433 を使って再起動し、再起動後に fsync を行なわない方法です。

$ pg_ctl -o "-F -p 5433" restart

postmaster の状態表示

下記は pg_ctlからの状態の出力の例です。

$ pg_ctl status
pg_ctl: postmaster is running (pid: 13718)
Command line was:
/usr/local/pgsql/bin/postmaster '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'

これは再起動モードで呼び出されるコマンドラインです。

バグ

完全な起動を行うためにすべての条件が揃う事を待つことは、必ずしも良い操作とは定義づけされません。もしアクセス制御の設定が、ローカルクライアントが対話モードでのみ接続可能というものだった場合、どうしようもなくなります。これは避けるべきです。

関連項目

postmaster, PostgreSQL 管理者用ガイド