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

postmaster

Name

postmaster -- PostgreSQL マルチユーザデータベースサーバ

Synopsis

postmaster [-A 0 | 1 ] [-B nbuffers] [-c name=value] [-d debug-level] [-D datadir] [-F] [-h hostname] [-i] [-k directory] [-l] [-N max-connections] [-o extra-options] [-p port] [-S] [--name=value] [-n | -s]

説明

postmasterは、PostgreSQLのマルチユーザデータベースサーバです。クライアントアプリケーションがデータベースに接続するためには、稼働しているpostmasterに(ネットワークを介して、またはローカルで)接続する必要があります。その後、 postmasterは接続を操作するために別のサーバプロセス("postgres")を開始します。また、 postmasterは、サーバプロセス間の管理も行います。

デフォルトで、postmasterはフォアグラウンドで開始し、標準出力にログメッセージを出力します。一般的なアプリケーションでは、 postmasterはブート時などに、バックグランドプロセスとして開始させると良いでしょう。

1つのデータベースクラスタのデータは、必ず1つのpostmasterによって管理されています。データベースクラスタとは、同じファイルシステムの場所に格納されているデータベースの集まりのことです。postmasterが起動する時、postmasterはデータベースクラスタファイルの場所("データ領域")を知っている必要があります。これはPGDATA環境変数、または -D起動オプションで行われます。また、それらのデフォルト設定はありません。1つのシステムで1つ以上のpostmasterプロセスを実行することは可能ですが、それらは異ったデータ領域を使用し、異った接続ポート(下記参照)を使用している必要があります。データ領域はinitdbを使用して作成されます。

オプション

postmasterは、下記のコマンドライン引数を指定できます。オプションに関する詳細は管理者ガイドを参照して下さい。また、設定ファイルを使用することによって、入力する手間を省けます。

-A 0|1

プログラムのデバッグの補助を行うために、実行中の表明チェックを行います。これは、コンパイル時に指定された時のみ、可能となります。その場合、デフォルトでは、onになります。

-B nbuffers

サーバプロセスが使用する共有バッファの数を設定します。デフォルトでは 64 バッファで、1 バッファは 8kB です。

-c name=value

与えられた実行時パラメータを設定します。そのリストと説明は 管理者ガイドをご覧下さい。実際、他の多くのコマンドラインオプションというのはそれらの引数の簡略されたものです。-c は複数のパラメータを設定するために複数個付与することができます。

-d debug-level

デバッグのレベルを設定します。大きい数が設定されている場合は、より多くのデバッグの出力がサーバのログに書かれます。デフォルトでは0であり、それはつまりデバッグは行われないことを意味します。4くらいまでの数が妥当と思われます。それ以上大きく指定しても追加される出力はありません。

-D datadir

データディレクトリのファイルシステム上の場所を特定します。上記を参照して下さい。

-F

パフォーマンス向上のために、システムクラッシュ時のデータ損傷を承知の上で、fsync 呼び出しを無効とします。このオプションを使用する前に詳細なドキュメントを読んで下さい。

-h hostname

postmasterがクライアントアプリケーションとの接続の際に使用するTCP/IPホスト名、またはアドレスを指定します。デフォルトでは、そのホストに付けられた全てのアドレス( ローカルホストを含む)が可能となっています。

-i

クライアントとTCP/IP(インターネットドメイン)経由で接続を可能とします。このオプションを使用しない場合にはローカルUNIXドメインソケット接続のみが使用可能となります。

-k directory

postmasterがクライアントアプリケーションと接続するために使用するUNIXドメインソケットのディレクトリを指定します。デフォルトでは、通常/tmpとなっていますが、これはビルドの際に変更できます。

-l

SSLを使用して、安全な接続を行います。-iも一緒に必要となります。このオプションを使用するためにはSSLがコンパイル時に有効になっている必要があります。

-N max-connections

postmasterが受け付けるクライアントの接続の最大値を設定します。デフォルトでは32となっていますが、システムがサポートできる最大プロセス数までまで設定することが可能です。(-Bオプションは、 -Nで指定した数の少なくても2倍の数が設定されている必要があります。 管理者ガイドの、多数のクライアント接続用のシステムリソースに対する要求事項に関する節を参照して下さい。)

-o extra-options

extra-optionsで指定されたコマンドラインオプションは、このpostmasterで開始されたすべてのバックエンドサーバプロセスに引き渡されます。 postgresを参照して下さい。このオプションも文字列にスペースが含まれている場合には、文字列全体がクォートされている必要があります。

-p port

クライアントアプリケーションに接続する際、postmasterが使用するTCP/IPポート、またはローカルUNIXドメインソケットファイルの拡張子を指定します。デフォルトでは、PGPORT環境変数、またはPGPORTが設定されていない場合にはコンパイル時に設定されている値(通常 5432)が使用されます。デフォルトのポート以外を指定した場合には、すべてのクライアントアプリケーションは、コマンドラインオプション、または PGPORT を使用して、同じポートを 指定する必要があります。

-S

postmasterがサイレントモードで起動することを指定します。それはつまり、ユーザの(管理)ターミナルから独立し、独自のプロセスグループを稼働させ、また、標準出力と標準エラーを/dev/nullにリダイレクトさせます。

この機能を使用する場合、すべてのログ出力を廃棄してしまいます。しかし、それは問題を解決させるときなどにはとても不便になってしまいますので、そう希望されないでしょう。postmasterをバックエンドとして起動させるよりよい方法は、下記を参照して下さい。

--name=value

名前付きの実行時パラメータを設定します。-c の短縮形式です。

バックエンドが異常終了した場合、デバッグ用として、2つのコマンドラインオプションが用意されています。これらのオプションはこのような状況におけるpostmasterの振舞いを制御しますが、いずれのオプションも通常の操作を目的としているものではありません。

このような状況に対しての通常の解決としては、他の全てのバックエンドを終了させ、また共有メモリとセマフォの再初期化を通知することがあげられます。これは、不安定になっているバックエンドが終了する前に、何か共有状態を壊す恐れがあるためです。

これらの特別の場合のオプションとは下記のものです。

-n

postmasterは共有データ構成を再初期化しません。知識が豊富なシステムプログラマは共有メモリとセマフォ状況の調査のためにデバッガを使用します。

-s

postmasterSIGSTOPシグナルを送って他の全てのバックエンドプロセスを停止させます。ただし、終了はさせません。これにより。システムプログラマは全てのバックエンドプロセスから手動でコアダンプを収集できます。

出力

semget: No space left on device

このメッセージが現れた場合、ipccleanコマンドを実行して下さい。実行後、postmasterを再起動させて下さい。引続きエラーが出るようであれば、インストールの注意書きにしたがって、共有メモリとセマフォについてカーネルを構築する必要があるかもしれません。一台のホスト上で複数のpostmasterインスタンスを立ちあげている場合や、カーネルの共有メモリが、またはセマフォの限界が比較的小さい場合は、共有メモリあるいはセマフォのパラメータを拡張するようにカーネルを再構築しなければなりません。

Tip: PostgreSQL の共有メモリ消費量を低減するために -B を低くすることとセマフォ消費量を低減するために -N を低くすることのどちらか、もしくは、両者を行なうことでカーネルの再構築を先に延ばすこともできます。

StreamServerPort: cannot bind to port

このメッセージが出るときは、他にpostmasterが同じポート番号で稼働していないかを確認して下さい。これは、下記のコマンドを実行することによって、容易に分かります。システムによって、

$ ps ax | grep postmaster

または

$ ps -e | grep postmaster

となります。

他にpostmasterプロセスが稼働していないことが確認できているにも関らず、まだこのエラーが出る場合には-p オプションを使用して異ったポートを使用して下さい。postmasterを停止させ、そのポートですぐに再立ち上げした場合は、エラーが出ることがあります。この場合、オペレーティングシステムがポートを閉鎖するまで数秒待ってから再挑戦して下さい。最後に、オペレーティングシステムが予約しているポート番号を指定した場合、エラーがでる場合があります。例えば、Unixの多くのバージョンでは1024より小さいポート番号は信頼できると見なされていて、Unixのスーパーユーザ以外アクセスできません。

注釈

可能であるならば、postmasterを終了させるために SIGKILL使用しないで下さい。これは、postmasterが保持しているシステムリソース(共有メモリやセマフォ)を解除させる前に終了させてしまうためです。

postmasterを普通に終了させるには、 SIGTERMSIGINT、または SIGQUITを使用することができます。SIGTERMは終了させる前に、すべてのクライアントが終了するまで待ちます。 SIGINTは強制的にすべてのクライアントを終了させて終了します。 SIGQUITは適切なシャットダウンを行わないで、即時に終了します。この場合は、次回の起動時に復旧処理を行います。

ユーティリティコマンドpg_ctlは、postmasterの起動とシャットダウンを安全、かつ使い勝手良くに行うためのものです。

-- オプションは FreeBSD や OpenBSD では動作しません。代わりに -c オプションを使用して下さい。このバグはオペレーティングシステムによるものです。PostgreSQL の今後のリリースで、このバグが解決できなかった場合は、回避方法を用意する予定です。

使用方法

postmasterをデフォルト値を使用してバックグランドで起動するためには、下記のコマンドを使用して下さい。

$ nohup postmaster >logfile 2>&1 </dev/null &

postmasterを特定のポートで起動させるには、下記のようなコマンドを実行して下さい。

$ postmaster -p 1234

このコマンドは、ポート1234を使用してpostmasterを起動させます。このpostmasterにpsqlで接続する場合は、下記のようにコマンドを入力します。

$ psql -p 1234

あるいは、環境変数PGPORTを下記のように設定します。

$ export PGPORT=1234
$ psql

名前付き実行時パラメータは、以下のどちらの方法でも設定できます。

$ postmaster -c sort_mem=1234
$ postmaster --sort-mem=1234

どちらの方法も、postgresql.conf 中で sort_mem を指定していたとしても、その値を上書きします。パラメータ名内のアンダースコアは、コマンドラインではダッシュでもアンダースコアでも表すことができることに注意して下さい。

Tip: まだ歴史が浅いものですが、パラメータの設定は、コマンドラインで行なうよりも postgresql.conf 内の設定を変更する方がおそらくより良い方法です。