★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 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_ctlPostgreSQLサーバを初期化、起動、停止、制御する

概要

pg_ctl init[db] [-s] [-D datadir] [-o initdb-options]

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

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

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

pg_ctl reload [-s] [-D datadir]

pg_ctl status [-D datadir]

pg_ctl promote [-s] [-D datadir]

pg_ctl kill signal_name process_id

pg_ctl register [-N servicename] [-U username] [-P password] [-D datadir] [-S a[uto] | d[emand] ] [-w] [-t seconds] [-s] [-o options]

pg_ctl unregister [-N servicename]

説明

pg_ctlPostgreSQLデータベースクラスタの初期化、PostgreSQLのデータベースサーバ(postgres)を起動、停止、再起動する、あるいは稼働中のサーバの状態を表示するためのユーティリティです。 サーバは手動で起動することも可能ですが、pg_ctlは、ログ出力のリダイレクトや、端末とプロセスグループの適切な分離などの作業を隠蔽してくれます。 さらにシャットダウン制御のための便利なオプションも提供します。

initまたはinitdbモードはPostgreSQLの新しいデータベースクラスタを作成します。 データベースクラスタとは、単一のサーバインスタンスで管理されるデータベースの集合です。 このモードはinitdbコマンドを呼び出します。 詳しくはinitdbを参照して下さい。

startモードでは、新しいサーバが立ち上がります。 サーバはバックグラウンドで起動され、その標準入力は/dev/null(Windowsの場合はnul)に接続されます。 Unix系のシステムではデフォルトで、サーバの標準出力と標準エラーはpg_ctlの標準出力に転送されます(標準エラー出力には転送されません)。 pg_ctlの標準出力はファイルにリダイレクトするか、例えばrotatelogsなどのログローテーションプログラムのような別プロセスにパイプで渡すべきです。 こうしないと、postgresはその出力を(バックグラウンドから)制御端末に書き出しますので、シェルのプロセスグループから切り離すことができません。 Windowsではデフォルトで、サーバの標準出力と標準エラーは端末に送信されます。 こうしたデフォルトの動作は-lを用いてサーバの出力をログファイルに追加するように変更することができます。 -lまたは出力のリダイレクトのどちらかを使用することを勧めます。

stopモードは、指定されたデータディレクトリで稼働しているサーバを停止(シャットダウン)します。 -mオプションでは、3つの異なる停止方式を選択できます。 smartモードは、全てのクライアントが切断し、オンラインバックアップがあればそれが終了するまで待ちます。 サーバがホットスタンバイ状態の場合、すべてのクライアント接続が切断された後にリカバリとストリーミングレプリケーションは終了します。 fastモード(デフォルト)はクライアントが切断するまで待たず、かつ、実行中のオンラインバックアップを終了させます。 全ての実行中のトランザクションをロールバックし、クライアントとの接続を強制的に切断した後、サーバを停止します。 immediateモードは、クリーンアップ処理なしで、全てのサーバプロセスを即座に中断します。 これを指定すると、再起動時にクラッシュリカバリ処理が実行されます。

restartモードは、実質的にはstopを実行して、その後、startを実行します。 この時、postgresコマンドラインオプションを変更することができます。 指定された相対パスがサーバ起動時にコマンドラインから指定されていた場合に restartが失敗する可能性があります。

reloadモードは、単にpostgresSIGHUPシグナルを送り、(postgresql.confpg_hba.confなどの)設定ファイルの再読み込みを実行させます。 これにより、設定ファイルのオプションで完全な再起動を必要としないものについて、変更を反映させることができます。

statusモードは指定したデータディレクトリでサーバが稼働しているかどうかを確認します。 稼働している場合はPIDと、サーバを起動する時に使われたコマンドラインオプションを表示します。 サーバが稼働していない場合、このプロセスは終了ステータス3を返します。 アクセス可能なデータディレクトリが指定されていない場合、プロセスは終了ステータス4を返します。

promoteモードでは、指定したデータディレクトリで稼動中のスタンバイサーバにリカバリを終了し読み書き操作を始めるようコマンドを送ります。

killモードでは指定したプロセスにシグナルを送信することができます。 これは特に、killコマンドを持たないMicrosoft Windowsで有用です。 サポートするシグナル名の一覧は--helpを使用して確認してください。

registerモードにより、Microsoft Windows上でシステムサービスを登録することができます。 -Sオプションによりサービスの起動種類をauto(システム起動時に自動的にサービスを起動)かdemand(要求が合った時にサービスを起動)から選択することができます。

unregisterによりMicrosoft Windows上のシステムサービスを登録解除することができます。 これは過去にregisterコマンドによりなされた変更を元に戻します。

オプション

-c
--core-file

実現可能なプラットフォームにおいて、サーバクラッシュ時にcoreファイルを生成できるように関連するソフトリソース制限を上げます。 障害が起きたサーバプロセスからスタックトレースを取得できますので、問題のデバッグや診断の際に有用です。

-D datadir
--pgdata datadir

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

-l filename
--log filename

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

-m mode
--mode mode

停止(シャットダウン)モードを指定します。 modesmartfastimmediate、もしくはこの3つのモード名の最初の1文字をとることができます。 省略時はfastが使用されます。

-o options

postgresに直接渡されるオプションを指定します。 複数オプションの呼び出しが追加されます。

このオプションは、確実に1グループとして渡すために、通常は単一引用符または二重引用符で囲まなければなりません。

-o initdb-options

initdbコマンドに直接渡すオプションを指定します。

このオプションは、確実にひとまとめとして渡すために、通常は単一引用符または二重引用符で囲まなければなりません。

-p path

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

initモードでは、このオプションは同様にinitdb実行プログラムの場所を指定します。

-s
--silent

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

-t
--timeout

起動または停止の完了まで待機する最大の秒数。 デフォルトは環境変数PGCTLTIMEOUTの値で、それが設定されていなければ60秒です。

-V
--version

pg_ctlのバージョンを表示し、終了します。

-w

起動もしくは停止処理が完了するのを待ちます。 待機は停止処理ではデフォルトのオプションですが、起動処理ではデフォルトではありません。 起動処理を待機している場合、pg_ctlは繰り返しサーバへの接続を試行します。 停止処理を待機している場合、pg_ctlはサーバがPIDファイルを削除するまで待機します。 このオプションにより起動時にSSLパスフレーズを入力することができます。 pg_ctlは、起動もしくは停止が成功したかどうかに基づいて終了コードを返します。

-W

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

-?
--help

pg_ctlコマンドライン引数の説明を表示し、終了します。

Windows用オプション

-e source

Windowsのサービスとして実行する際に、イベントログへの出力用にpg_ctlが使用するイベントソースの名前です。 デフォルトはPostgreSQLです。 これはpg_ctl自体からのログ出力のみを制御することに注意してください。 サーバが起動した後は、event_sourceで指定したイベントソースが使用されます。 サーバが起動の初期で障害を起こした場合は、デフォルトのイベントソースのPostgreSQLを使用するかもしれません。

-N servicename

登録するシステムサービスの名前です。 この名前は、システム名としても表示名としても使用されます。

-P password

サービスを開始するユーザ用のパスワードです。

-S start-type

登録するシステムサービスの起動種類です。 起動種類はautodemand、またはこれら2単語の先頭の文字のいずれかです。 省略時はautoが使用されます。

-U username

サービスを起動するユーザのユーザ名です。 ドメインユーザの場合はDOMAIN\username書式を使用してください。

環境

PGCTLTIMEOUT

起動または終了が完了するまでに待機する秒数のデフォルトの最大値です。 設定されていない場合のデフォルトは60秒です。

PGDATA

デフォルトのデータディレクトリの場所です。

また、pg_ctlは、他のほとんどのPostgreSQLユーティリティと同様、libpqでサポートされる環境変数を使用します(32.14. 環境変数を参照してください)。 この他のサーバ変数についてはpostgresを参照してください。

ファイル

postmaster.pid

データディレクトリにこのファイルがあるかどうかによって、pg_ctlはサーバが現在稼働中かどうかを決定します。

postmaster.opts

このファイルがデータディレクトリにあれば、pg_ctl(のrestartモード)は、-oで上書きされるものを除き、このファイルの内容をオプションとしてpostgresに渡します。 また、このファイルの内容がstatusモードで表示されます。

サーバの起動

サーバを起動します。

$ pg_ctl start

以下はサーバが接続を植え付けられるようになるまで待機する起動例です。

$ pg_ctl -w start

ポート5433を使いfsyncなしでサーバを起動します。

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

サーバの停止

サーバを停止するためには以下を使用します。

$ pg_ctl stop

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

$ pg_ctl stop -m fast

サーバの再起動

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

$ pg_ctl restart

再起動の際にサーバのシャットダウンを待ってから起動を行う方法です。

$ pg_ctl -w restart

以下はポート5433を使って再起動し、再起動後にfsyncを無効にする方法です。

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

サーバの状態表示

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

$ pg_ctl status
pg_ctl: server is running (PID: 13718)
/usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data" "-p" "5433" "-B" "128"

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

関連項目

initdb, postgres