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] [-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つは8 kBとなっています。

-c name=value

与えられた実行時の引数を設定します。そのリストと説明は Administrator's Guideをご覧下さい。 実際、他の多くのコマンドラインオプションというのは それらの引数の簡略されたものです。

いくつかのシステムでは、GNU形式の長い書き方 --name=valueを使用することも可能です。

-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となっていますが、システムが多くのプロセスをサポートできる場合、 最大1024のプロセスまで設定することが可能です。(-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を バックエンドとして起動させるよりよい方法は、下記を参照して下さい。

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

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

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

-n

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

-s

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

出力

semget: No space left on device

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

Tip: Postgresの共有メモリ消費量を低くするために -Bを使用、または-Nを使用してPostgresのセマフォ消費を少なくさせ、 カーネルの再構築を先に延ばす事も出来ます。

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の 起動とシャットダウンを安全、かつ使い勝手良くに行うためのものです。

使用方法

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

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

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

$ postmaster -p 1234
このコマンドは、ポート1234を使用してpostmasterを起動させます。 このpostmasterにpsqlで接続する場合は、 下記のようにコマンドを入力します。
$ psql -p 1234
あるいは、環境変数PGPORTを下記のように設定します。
$ export PGPORT=1234
$ psql