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 ソフトウ エアの一部です。

出力

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

説明

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

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

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

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

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

postconfigが出力する値は

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