initdb

initdbPostgreSQLのデータベースクラスタを新しく作成する

概要

initdb [option...] [ --pgdata | -D ] directory

説明

《機械翻訳》initdbは新しいデータベースクラスタ.PostgreSQL

《マッチ度[88.574538]》データベースクラスタの作成には、データベースのデータを保存するディレクトリの作成、共有カタログテーブル(特定のデータベースではなく、クラスタ全体に所属するテーブル)の生成、そしてpostgresデータベース、template1データベース、template0データベースの作成といった作業が含まれます。 postgresデータベースは、ユーザ、ユーティリティ、サードパーティ製アプリケーションのデフォルトデータベースとしての使用を意図したものです。 template1template0は、後のCREATE DATABASEコマンドでコピーされる元のデータベースを意図しています。 新しいデータベースを作成する際は、template1データベースの全ての内容がコピーされます。 template0を修正してはいけませんが、template1にはオブジェクトを追加でき、そのオブジェクトは後に生成した各データベースにデフォルトでコピーされます。 より詳細については23.3を参照してください。 《機械翻訳》データベースクラスタの作成は、クラスタデータが存在するディレクトリの作成、共有カタログテーブルの生成(特定のデータベースではなくクラスタ全体に属する表)、およびPOSTGRESテンプレート1およびテンプレート0データベースの作成で構成されます。 POSTGRESデータベースは、ユーザー、ユーティリティおよびサード・パーティ・アプリケーションでの使用を目的としたデフォルトデータベースです。 テンプレート1およびテンプレート0は、ソースデータベースを後のCREATEデータベースコマンドでコピーすることを目的としています。 テンプレート0は変更しないでください。 ただし、オブジェクトをテンプレート1に追加することはできます。 このオブジェクトは、デフォルトによって後で作成されるデータベースにコピーされます。 詳細は23.3を参照してください。

initdbは指定されたデータディレクトリを作成しようと試みますが、そのデータディレクトリの親ディレクトリの所有者がrootであるなど、権限がないことがあります。 このような場合、まず、空のデータディレクトリをrootで作成し、chownを使ってそのディレクトリの所有権限をデータベースのユーザに変えてください。 次にsuを使ってデータベースユーザとなり、initdbを実行します。

initdbは、サーバプロセスの所有者となるユーザによって実行されなければなりません。 initdbによって作成されるファイルやディレクトリにサーバがアクセスできる必要があるからです。 サーバをrootとして実行することはできませんので、rootでinitdbを実行してはいけません (実際には、実行しようとしても拒否されます)。

セキュリティ上の理由から、デフォルトではinitdbにより作られた新しいクラスタはクラスタの所有者だけがアクセスできます。 --allow-group-accessにより、クラスタの所有者と同じグループのユーザがクラスタ内のファイルを読めるようになります。 これは非特権ユーザとしてバックアップを実行するのに有用です。

《機械翻訳》initdbは、データベースクラスタのデフォルトロケールとキャラクタセットエンコーディングを初期化します。 これらは、データベースの作成時に各に対して個別に設定することもできます。 initdbは、他のすべてのデータベースのデフォルトとして機能するテンプレートデータベースのこれらの設定を決定します。

《機械翻訳》デフォルトごとに、initdbはロケールプロバイダlibcを使用します(24.1.4を参照してください)。 libcロケールプロバイダは環境からロケール設定を取得し、ロケール設定からエンコーディングを決定します。

《マッチ度[86.792453]》クラスタに別のロケールを選択するには、--localeオプションを使用します。 また、個々のロケールカテゴリに値を設定するための個々のオプション--lc-*もあります(下記参照)。 異なるロケールカテゴリの設定に一貫性がないと、無意味な結果になることがあるので、注意して使用してください。 《機械翻訳》クラスタに別のロケールを選択するには、オプション--ロケールを使用します。 また、個々のオプション--lc-*--icu-ロケール(下記参照)を使用して、個々のロケールカテゴリの値を設定することもできます。 ノートでは、異なるロケールカテゴリに対して一貫性のない設定を行うと、無意味な結果が生じる可能性があるため、注意して使用する必要があります。

《マッチ度[61.802575]》また、ICUライブラリを使用してロケールサービスを提供することもできます。 (これも後で作成されるデータベースのデフォルトを設定するだけです。) このオプションを選択するには、--locale-provider=icuを指定します。 適用する特定のICUロケールIDを選択するには、--icu-localeオプションを使用します。 実装上の理由とレガシーコードをサポートするために、initdbはICUロケールプロバイダが使用されている場合でもlibcロケール設定を選択し初期化することに注意してください。 《機械翻訳》また、initdbはICUライブラリを使用して、--locale-provider=icuを指定することにより、ロケールサービスを提供できます。 サーバはICUをサポートしている必要があります。 適用する特定のICUロケールIDを選択するには、オプション--icu-localeを使用します。 実装上の理由とレガシーコードのサポートのために、initdbはICUロケールプロバイダが使用されている場合でも、libcロケール設定を選択して初期化します。

initdbを実行すると、選択したロケール設定を出力します。 複雑な要件がある場合や、複数のオプションを指定した場合は、結果が意図したものと一致するのを確認することをお勧めします。

ロケール設定の詳細については24.1を参照してください。

デフォルトの符号化方式を変更するには、--encodingオプションを使用します。 詳細は24.3に記載しています。

オプション

-A authmethod
--auth=authmethod #

このオプションは、pg_hba.confで使用されるローカルユーザーのデフォルトの認証方法(hostおよびlocal行)を指定します。 有効な値の概要については21.1を参照してください。

initdbは、非レプリケーションおよびレプリケーションの接続について、指定の認証方式を使うエントリをpg_hba.confに事前に作成します。

システムのすべてのローカルユーザが信頼できるわけではない場合は、trustを使用しないでください。 インストールを簡単にするためにtrustがデフォルトになっています。

--auth-host=authmethod #

このオプションはpg_hba.confにてTCP/IP接続経由のローカルユーザ用に使用される認証方法(host行)を指定します。

--auth-local=authmethod #

このオプションはpg_hba.confにてUnixドメインソケット接続経由のローカルユーザ用に使用される認証方法(local行)を指定します。

-D directory
--pgdata=directory #

《マッチ度[83.870968]》このオプションは、データベースクラスタを格納すべきディレクトリを指定します。 initdbが必要とする情報はこれだけですが、環境変数PGDATAを設定しておけば、このオプションの指定を省略できます。 この方法は、後に同じ変数を使用してデータベースサーバ(postgres)がデータベースディレクトリを参照できるので、便利です。 《機械翻訳》このオプションは、データベースクラスタを保存するディレクトリを指定します。 これはinitdbが必要とする唯一の情報ですが、PGDATA環境変数を設定することで書き込みを避けることができます。 これは、データベースサーバ(POSTGRES)が後で同じ変数でデータディレクトリを見つけることができるので便利です。

-E encoding
--encoding=encoding #

《機械翻訳》テンプレートデータベースのエンコーディングを選択します。 これは、後で作成するデータベースのデフォルトエンコーディングにもなります。 ただし、その時点で上書きする場合を除きます。 PostgreSQLサーバでサポートされる文字セットについては、24.3.1を参照してください。

《機械翻訳》デフォルト別に見ると、テンプレートデータベースエンコーディングはロケールに由来しています。 --no-localeが指定されている場合(または同等に、ロケールがCまたはPOSIXの場合)、デフォルトはICUプロバイダーではUTF8libcプロバイダーではSQL_ASCIIになります。

-g
--allow-group-access #

クラスタの所有者と同じグループのユーザが、initdbにより作られたクラスタファイルすべてを読むことを許可します。 WindowsではPOSIX形式のグループパーミッションをサポートしませんので、このオプションは無視されます。

--icu-locale=locale #

《機械翻訳》ロケールプロバイダを使用する場合に、ロケールサポートを指定します。 ICUは24.1で記述されます。

--icu-rules=rules #

《機械翻訳》照合順序照合順序の動作をカスタマイズするための追加のデフォルトルールを指定します。 これはICUでのみサポートされています。

-k
--data-checksums #

I/Oシステムによる破損検知を補助するために、データページにおいてチェックサムを使用します。 これがないと警告もされません。 チェックサムを有効にすると、認知できる程度の性能低下が発生する可能性があります。 設定した場合、すべてのデータベースにおいて、すべてのオブジェクトに対してチェックサムが計算されます。 チェックサムの失敗はすべてpg_stat_databaseビューで報告されます。 詳細については30.2を参照してください。

--locale=locale #

データベースクラスタ用のデフォルトのロケールを設定します。 このオプションを指定しない場合は、initdbを実行している環境のロケールが継承されます。 ロケールサポートについては24.1で説明します。

--lc-collate=locale
--lc-ctype=locale
--lc-messages=locale
--lc-monetary=locale
--lc-numeric=locale
--lc-time=locale #

--localeと似ていますが、指定したカテゴリのロケールのみを設定します。

--no-locale #

--locale=Cと同じです。

--locale-provider={libc|icu} #

《マッチ度[72.727273]》このオプションは、新しいクラスタで作成されたデータベースのロケールプロバイダを設定します。 新しいデータベースが後で作成されるときに、CREATE DATABASEコマンドで上書きできます。 デフォルトはlibcです。 《機械翻訳》このオプションは、新しいロケールで作成されたデータベースのクラスタプロバイダを設定します。 これは、その後新しいデータベースが作成されるときに、CREATEデータベースコマンドで上書きできます。 デフォルトはlibcです(24.1.4を参照)。

-N
--no-sync #

デフォルトではinitdbはすべてのファイルが安全にディスクに書き出されるまで待機します。 このオプションを使うとinitdbは待機せずに返るようになり、より高速になりますが、後でオペレーティングシステムがクラッシュした場合にデータディレクトリが破損状態になってしまう可能性があります。 通常、このオプションは試験用では有用ですが、実用のインストレーションを作成する際に使用すべきではありません。

--no-instructions #

デフォルトではinitdbは出力の最後にクラスタを起動する手順を表示します。 このオプションを使うと、これらの手順が省略されます。 これは主にinitdbをプラットフォーム固有の動作でラップするツールで、これらの手順が間違っている可能性がある場合に使用することを目的としています。

--pwfile=filename #

《マッチ度[81.751825]》initdbはデータベーススーパーユーザのパスワードをこのファイルから読み取ります。 このファイルの最初の行がパスワードとして解釈されます。 《機械翻訳》initdbに、ファイルからブートストラップスーパーユーザのパスワードを読み取らせます。 ファイルの最初の直線がパスワードと見なされます。

-S
--sync-only #

すべてのデータベースファイルを安全にディスクに書き出し、終了します。 これは通常のinitdbの操作をまったく行いません。 通常、このオプションは、fsyncoffからonに変更した後の信頼できるリカバリを確実にするのに有用です。

-T config
--text-search-config=config #

デフォルトの全文検索設定を設定します。 詳細についてはdefault_text_search_configを参照してください。

-U username
--username=username #

《機械翻訳》ブートストラップスーパーユーザのユーザ名前を選択します。 これは、クラスタ所有者の名前にデフォルト設定されます。

-W
--pwprompt #

《マッチ度[80.708661]》initdbにデータベースのスーパーユーザ権限を与えるためのパスワード入力のプロンプトを表示させます。 パスワード認証を行うつもりがない場合は必要ありません。 このオプションを指定しても、パスワードの設定を行わない限りパスワード認証は行われません。 《機械翻訳》initdbプロンプトをパスワードにして、ブートストラップスーパーユーザを与えます。 パスワードプランを使用するときに認証を使用しない場合、これは重要ではありません。 そうしないと、パスワードを設定するまでパスワード認証を使用できません。

-X directory
--waldir=directory #

このオプションは先行書き込みログの格納ディレクトリを指定します。

--wal-segsize=size #

WALセグメントサイズをメガバイト単位で設定します。 これはWALログの個々のファイルの大きさです。 デフォルトの大きさは16メガバイトです。 値は1から1024の間の2の冪でなければなりません。 このオプションは初期化の際にのみ設定することができ、後で変更することはできません。

WALログのシッピングやアーカイブの粒度を制御するために、この大きさを調整することは有用でしょう。 また、大量のWALのあるデータベースでは、ディレクトリ当たりのWALファイルの数だけでパフォーマンスや管理の問題となり得ます。 WALファイルの大きさを増やせば、WALファイルの数は減るでしょう。

この他にも、使用頻度は下がりますが、下記のオプションが使用可能です。

-c name=value
--set name=value #

Forcibly set the server parameter name to value during initdb, and also install that setting in the generated postgresql.conf file, so that it will apply during future server runs. This option can be given more than once to set several parameters. It is primarily useful when the environment is such that the server will not start at all using the default parameters.

-d
--debug #

ブートストラップバックエンドからのデバッグ情報と、一般の利用者にはおそらく不要なその他の情報を出力します。 ブートストラップバックエンドとはinitdbがカタログテーブルを作成する際に使用するプログラムです。 このオプションはうんざりするようなログを大量に出力します。

--discard-caches #

debug_discard_caches=1オプションをつけてブートストラップバックエンドを実行します。 これは非常に長い時間がかかるため、難解なデバッグでのみ使用されます。

-L directory #

データベースクラスタを初期化する際に、initdbが参照すべき入力ファイルを指定します。 これは通常必要ありません。 明示的に指定する必要がある場合は、その時に指定するよう要求されます。

-n
--no-clean #

デフォルトでは、initdbを実行中にエラーが発生し、データベースクラスタを完成できなかった場合に、そのエラーが発生する前に作成された全てのファイルを削除します。 このオプションを指定すると、これらのファイルが削除しないで残されるので、デバッグの際にはとても便利です。

その他のオプションを以下に示します。

-V
--version #

initdbのバージョンを表示し、終了します。

-?
--help #

initdbのコマンドライン引数の使用方法を表示し、終了します。

環境

PGDATA #

データベースクラスタを保存するディレクトリを指定します。 -Dオプションを使用して上書きすることができます。

PG_COLOR #

診断メッセージで色を使うかどうかを指定します。 可能な値はalwaysautoneverです。

TZ #

作成されるデータベースクラスタのデフォルトの時間帯を指定します。 値は完全な時間帯の名前で指定することが望ましいです(8.5.3参照)。

また、このユーティリティは、他のほとんどのPostgreSQLユーティリティと同様、libpqでサポートされる環境変数を使用します(34.15を参照してください)。

注釈

initdbpg_ctl initdb経由でも呼び出すことができます。

関連項目

pg_ctl, postgres, 21.1