initdb

Name

initdb  --  新しいPostgres データベースインスタンス を作成する。

Synopsis

initdb [ --pgdata=dbdir | -r dbdir ]
    [ --pglib=libdir | -l libdir ]
    [ --template=template | -t template ]
    [ --username=name | -u name ]
    [ --noclean | -n ] [ --debug | -d ]
  

入力

--pglib=libdir, -l libdir, PGLIB

Postgres を組み立てるためのファイ ルをどこに置くのかを指定します。その機能のために特定のディレ クトリに置かなければならないファイルは別にして、 Postgres ソフトウエアを組み立てる ファイルは、 libdir ディレク トリと呼ばれる1つのディレクトリにインストールされます。共有カ タログテーブルに収納される全ての情報を持つ global1.bki.source は、 initdb が必要とする、そのディレク トリに存在するファイルの一例です。

--pgdata=dbdir, -r dbdir, PGDATA

データベースのデータを Unix ファイルシステム上のどこに置く のかを指定します。このトップレベルディレクトリは PGDATA ディレクトリと呼ばれます。

--username=name, -u name, PGUSER

誰がこのデータベースシステムの Postgres スーパユーザとなるのかを 指定します。Postgres スーパユーザ は、データベースシステムを格納するファイル全てと、これらのフ ァイルにアクセスする postmaster プロセスとバックエンドプロセ スを所有する Unix ユーザです。指定が無ければ、このデフォルト 値を単純に(initdb を実行する Unix ユーザである)あなたにします。

Note: Unix のスーパユーザ( root )だけが Postgres スーパユーザと異なった所 有者を持つデータベースシステムを作成できます。

その他のパラメータは、あまり使われませんが、以下のものが使用可 能です。

--template=template, -t template

既存データベース内の template1 データベー スを置換し、それ以外は何も変更しません。これは、より新しいリ リースの Postgres 附属の initdb を使って、 template1 データベースをアップグレードする 必要がある時や、何らかのシステム上の問題によって template1 データベースがおかしくなってしま った時に有用です。通常 template1 の内容は そのデータベースシステムができてからずっと一定に保たれていま す。--template オプションをつけた initdb の実行によって何かを壊すこ とはありません。

--noclean, -n

デフォルトでは、initdb は、エラーに よってデータベースシステムを正常に作成することができないことが 判ると、作業を完了できないことが判る前に作成していたファイルを 全て削除します。このプログラムによって生成された全ての core フ ァイルも削除されます。このオプションは後かたづけを全て抑制しま すので、デバッグの際に有用です。

--debug, -d

バックエンドのブートからのデバッグ用出力を表示します。バック エンドのブートは、initdb がカタロ グテーブルを生成する時に使用するプログラムです。このオプショ ンは途方もないほどの量の出力を行ないます。また、最後のゴミ掃 除段階では無効にされます。

次のファイルもまたinitdb への入力です。

postconfig

(環境変数 PATH によって定義された)Unix のコマンド検索パス のどこかにあった場合に使用されます。これは、いくつかのコマン ドオプションのデフォルト値を指定するプログラムです。後述しま す。

PGLIB/global1.bki.source

新規データベースシステム中の共有カタログテーブルの内容です。 このファイルは Postgres ソフトウエ アの一部です。

PGLIB/local1_template1.bki.source

新規データベースシステム中の template1 テーブルの内容です。 このファイルは Postgres ソフトウ エアの一部です。

出力

initdb は PGDATA データ 領域に、システムテーブルとフレームワークであるファイルを、インス タンスを完全にするために作成します。

説明

initdb は新しい Postgres データベースシステムを作 成します。データベースシステムとは、ある Unix ユーザによって 管理され、1 つの postmaster によって処理されるデータベースの 集合です。

データベースシステムの作成は、データベースのデータを保存するディレ クトリの作成、(特定のデータベースに全く属さないテーブルである、) 共有カタログテーブルの生成、template1 データベー スの作成から成ります。template1 データベースとは 何でしょう? データベースを作成する時、 Postgres は template1 から全てをコピーしてその作成を行ないま す。そこには組み込み型といったものを全て含むカタログテーブルが含ま れています。

initdb は、データベースを作成した後、い くつかの最適化パラメータをリセットする vacuum を実行して、初期化を完了します。

initdb にパラメータを付与する方法には、 次の 3 つの方法があります。

コマンドオプションは常に他の方法で指定されたパラメータを上書きしま す。postconfig で返される値は、環境変数 を全て上書きします。しかし、環境変数の値を使いたければ、 postconfig プログラムをその値に基づいて 出力するように作成することができます。

postconfigが出力する値は

var1=value1 var2=value2 ...
   
といった形式でなければなりません。 何もパラメータを提供したくない場合は、何も出力しなくても構いませ ん。var の値は、対応する環境変数の名 前に一致します。例えば、
PGDATA=/tmp/postgres_test
   
は、PGDATA という環境変数の値を /tmp/postgres_test に設定して、 initdb を呼び出すことと同じ効果があり ます。