pg_ctl

Name

pg_ctl --  postmaster の起動、停止、もしくは再起動

Synopsis

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

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

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

pg_ctl status [-D datadir]

説明

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

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

stop モードでは、特定のデータディレクトリ上で 起動している postmaster はシャットダウンされています。 -m オプションで三つの異なるシャットダウンメソッド を選択することができます。"Smart"モードは全ての クライアントが切断するのを待ちます。これはデフォルトです。 "Fast"モードはクライアントが切断するのを待ちません。 すべての動いているトランザクションはロールバックされます。 "Immediate"モードは完全にシャットダウンせずにアボート します。これは再起動時にリカバリー実行することになります。 デフォルトでは、stop モードはシャットダウンが終了するまで待ちます。

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

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

オプション

-D datadir

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

-l filename

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

-m mode

シャットダウンモードを指定します。モードsmartfast、もしくは immediate、もしくはこれらの三つのうちのどれかの 最初の文字になります。

-o options

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

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

-p path

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

-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 Administrator's Guide