initdb - 新規 Postgres データベースシステムを作ります
initdb [ --pglib= directory][ --pgdata= directory][ --username= username][ --template ][ --noclean ][ --debug ]
initdb [ -l directory][ -r directory][ -u username][ -t ][ -n ][ -d ]
initdbは新規の Postgres データベースシステムを作ります。データベースシステムとは、すべて同一の Unix ユーザに管理され、1つの postmaster で取り扱われるデータベースの集合です。
データベースシステムを作るということは、データベースのデータが置かれるディレクトリを作り、共有カタログ表 (特定のデータベースに属さない表) を作成し、template1データベースを作ります。template1データベースとは何でしょう?データベースを作る時、Postgres はtemplate1データベースからすべてをコピーして作ります。それは組み込み型のようなものが埋め込まれたカタログ表を含んでいます。
initdbがデータベースを作った後、 vacuum を行います。
initdbにパラメータを渡すには 3つの方法があります。まず、initdb のコマンドオプションを使えます。2番目として、initdb を呼び出す前に環境変数をセットできます。3番目としては、postconfigと呼ばれるプログラムを Unix のコマンド検索パスに持つことができます。initdbはそのプログラムを呼び出し、そのプログラムは initdb のパラメータを標準出力に書き出します。
コマンドオプションはその他で指定されたパラメータをすべて上書きします。postconfigの返す値はすべて環境変数の値を上書きしますが、環境変数の値を使いたければpostconfigプログラムに環境変数に依存した出力を出すこともできます。
postconfigの出力する値は、
var1=value1 var2=value2 ...
というフォーマットになります。
もし何のパラメータも与えられないと思えば何も出力しません。varNの値は対応する環境変数の名前と同じになります。例えば、PGDATA=/tmp/postgres_test という出力は、PGDATA という環境変数の値を /tmp/postgres_test にしてinitdbを呼び出すのと同じ効果となります。
どのようにデータベースシステムを作るかを知らせる3つのパラメータを initdb に与えなくてはなりません。
1) Postgres を作成するファイルはどこにあるのでしょうか?関数によって特定のディレクトリに行かなくてはならないファイルとは別に、Postgres ソフトウェアを汲み上げるファイルは pglib ディレクトリと呼ばれるディレクトリにインストールされます。そこに見られるinitdbに必要なファイルの例としては、global1.bki.source で、それには共有カタログ表に入る情報がすべて含まれています。 --pglib ( -l ) オプション、または環境変数 PGLIB を使ってください。
Unix ファイルシステムでデータベースのデータの入るところはどこにしたいでしょうか?そのトップディレクトリは pgdata ディレクトリと呼ばれます。 --pgdata ( -d ) オプション、または環境変数 PGDATA を使ってください。
Postgres のスーパーユーザは誰になるでしょうか?Postgres のスーパーユーザはデータベースシステムのを保存するファイルを所有するUnixユーザで、また postmaster とそれにアクセスするバックエンドプロセスの所有者となります。 --username ( -u ) オプション、または環境変数 PGUSER を使ってください。そうでなければ、デフォルトではあなた( Unix のユーザでinitdbを走らせた人) になります。Unix のスーパーユーザのみが Postgres のスーパーユーザ以外でデータベースシステムを作ることのできる人であることに注意してください。
initdbは次のコマンドラインオプションを取ることができます:
--pglib= directory -l directory
上記のように、指定したディレクトリの Postgres のファイルを使います。
--pgdata= directory -r directory
上記のように、データベースシステムをこのディレクトリに置きます。
--username= username -u username
上記のように、指定した Unix ユーザを Postgres のスーパーユーザとしてデータベースシステムを構築します。
--template -t
template1データベースを既存のデータベースシステムと置換え、その他は何も変更しません。これはtemplate1データベースを 新リリースの Postgres の initdbを使ってアップグレードする時や、システムの問題でtemplate1データベースが破壊されてしまった時に有用です。通常、template1の内容は、データベースの存在期間中は一定に存続します。initdbを --template オプション付きで走らせても、何も削除することはできません。
--noclean -n
"noclean" モードで実行します。デフォルトでは、initdbのエラーでデータベースシステムが完全に作れなかった時には、それ以前に作られたであろうファイルをすべて削除します。それには呼び出したプログラムが残した core ファイルも含みます。このオプションはそうした整理を抑制しますので、デバッグに有用です。
--debug -d
ブートストラップバックエンドからのデバッグ出力を表示します。ブートストラップバックエンドとは、initdbがカタログ表を作るのに使うプログラムです。このオプションは大量の出力を生成します。また、最後の vacuum のステップを実行しません。